python内置模块之random,os,sys,json,subprocess

python内置模块之random,os,sys,json,subprocess

1. random随机数模块

import random

# 1. 随机产生一个0-1之间的小数
print(random.random())

# 2. 随机产生一个1-6之间的整数
print(random.randint(1,6))

# 3. 随机产生一个1-6之间的小数
print(random.uniform(1,6))

# 4. 随机抽取一个
print(random.choice(['特等奖','一等奖','二等奖','三等奖','纪念奖']))

# 5. 随机抽取指定数量样本
print(random.sample(['安徽省','江苏省','山东省','广东省','四川省','云南省'], 2))

# 6. 随机打乱容器类型中的诸多元素
l = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
random.shuffle(l)
print(l)
# [2, 1, 13, 8, 9, 6, 12, 5, 4, 10, 7, 14, 11, 3, 15]

前几年搜狗公司笔试题

"""
编写五位随机验证码,可以是由数字,小写字母,大写字母任意组合。
"""
import string
import random

# 方法一:使用string模块
code = ''
for i in range(5):
    # 全部大小写英文字符
    letters = string.ascii_letters
    # 随机抽取全部大小写英文字母
    letters1 = random.choice(letters)
    # 随机生成0-9其中数字
    number = random.randint(0, 9)
    tar_code = random.choice([letters1, number])
    code += str(tar_code)

print(code)


# 方法二:
code1 = ''
for j in range(5):
    letter_upper = chr(random.randint(65, 90))
    letter_lower = chr(random.randint(97, 122))
    number1 = random.randint(0, 9)
    tar_code1 = random.choice([letter_lower, letter_upper, number1])
    code1 += str(tar_code1)

print(code1)

2. os模块

重点是:os模块主要与操作系统打交道!!!

import os

# 1. 创建单级目录(文件夹)
os.mkdir('文件夹名字')
os.mkdir(r'文件夹名字\文件加名字22')  # 直接报错,只能创建单级目录

# 2. 创建多级目录(文件夹)
os.makedirs(r'文件夹\文件夹2\文件夹3')

# 3. 删除空文件夹(空目录)
os.rmdir()  # 只有空文件夹才可以删,局限很大
os.removedirs()  # 只有空文件夹才能删除

# 4. 列举指定路径下的文件名称,包含任意类型文件
print(os.listdir(r'D:/'))

# 5. 拼接文件完整路径***********
# 专门用于路径啤酒,并且能够自动识别当前系统的路径分隔符
os.path.join()

# 6. 当前文件所在路径,还可以嵌套,则为上一级路径
BASE_DIR = os.path.dirname(__file__)
mo_dir = os.path.join(BASE_DIR, '教学视频')

# 7. 删除一个文件
os.remove('文件名')

# 8. 修改文件名称
os.rename('原文件名', '新文件名')

# 9. 获取当前工作路径
print(os.getcwd())

# 10. 切换路径
os.chdir('想要切换的路径')

# 11. 判断当前路径是否存在,既可以判断文件夹,也可以判断文件。
os.path.exists('想判断的对象')
# 12. 判断当前路径是否是文件
os.path.isfile('想判断的对象')
# 13. 判断当前路径是否是文件夹
os.path.isdir('想判断的对象')

# 14. 获取文件大小(字节数)
os.path.getsize()

3. sys模块

重点是:主要与python解释器打交道

import sys

# 系统路径,是个列表
print(sys.path)

sys.exit(1)     # 退出程序,几乎不用
sys.version()   # 版本
sys.platform()  # 平台

print(sys.argv)
# 单独打印,获取当前文件的绝对路径
# 我们不怎么用,但是很多软件底层会用到

4. json(序列化)模块

json格式数据:实现跨语言传输

import json

d = {'name':'joshua', 'age':28}
# 1. 将python其他数据类型转成json格式字符串
"""双引号是json格式的独有特征"""
res = json.dumps(d)  # 序列化
print(res, type(res))
# {"name": "joshua", "age": 28} <class 'str'>

# 2. 将json格式字符串转换成当前语言对应的某个数据类型
res1 = json.loads(res)  # 反序列化
print(res1, type(res1))
# {'name': 'joshua', 'age': 28} <class 'dict'>


"""
可以暂时简单理解为:
	序列化就是将其他数据类型转换成字符串的过程
		json.dumps()
	反序列化就是将字符串转换成其他数据类型
		json.loads()
"""

# 将字典写入文件快捷方法
# json.dump()  相当于先dumps再write
# json.load()  相当于先loads再read

with open(r'a.txt', 'w', encoding='utf8') as f:
	json.dump(d, f)

with open(r'a.txt', 'r', encoding='utf8') as r:
	res = json.load(f)

ensure_ascii=False
# 上式可以阻止json序列化的时候会将中文转换成unicode类型

# 并不是所有的数据类型都支持序列化
# 例如集合set就没有办法序列化,但是不重要
可以通过:json.JSONEncoder查看支持序列化反序列化的类型。

python内置模块之random,os,sys,json,subprocess

5. subprocess模块

import subprocess

"""
1. 基于网络连接上一台计算机(socket模块)
2. 让连接上的计算机执行我们需要的命令
3. 将命令的结果返回给我们(当然也可以不返回)

"""
# tasklist:查看当前计算机正在跑着的程序列表。

res = subprocess.Popen('tasklist',
                       shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)

print('stdout',res.stdout.read().decode('gbk'))
# 用来获取正确命令执行之后的结果

print('stderr',res.stderr.read().decode('gbk'))
# 用来获取错误命令执行之后的结果

"""在zgwindows底层用的是gbk"""

上一篇:海賊王になる男です。常用模块之random,os,sys,json,subprocess


下一篇:PaddleOCR打包exe--Pyinstaller