常用模块
![image]()
1、random模块
# random模块
'''
随机数模块
'''
# 导入random模块
import random
print(random.random()) # 生成0到1内随机一个小数
print(random.randint(1, 5)) # 随机生成指定区间里一个整数
print(random.uniform(1, 5)) # 随机生成指定区间里的一个小数
print(random.choice([1, 2, 3, 4])) # 随机抽取一个样本数量
print(random.choice(['一等奖', '二等奖', '三等奖', '特等奖', '谢谢惠顾']))
print(random.sample(['一等奖', '二等奖', '三等奖', '特等奖', '谢谢惠顾'], 2)) # 随机抽取指定的样本数量
l = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
random.shuffle(l) # 随机打乱容器类型中的诸多元素
print(l) # [2, 3, 'Q', 6, 10, 'A', 5, 9, 'J', 4, 8, 7, 'K']
# 随机生成位数为5的验证码,每一位都由数字,大写字母和小写字母中随机
# 导入random模块
# import random
# 提前定义一个存储验证码的容器
code_list = []
# 根据用户的输入生成不同位数的验证码
n = input('验证码位数:').strip()
n = int(n)
def v_code(n):
for i in range(n):
# 生成一个随机数
res1 = str(random.randint(0, 9))
# 随机生成一个大写字母
res2 = chr(random.randint(65, 90))
# 随机生成一个小写字母
res3 = chr(random.randint(97, 122))
# 随机从大写字母,小写字母,数字中选择一个数
code = random.choice([res1, res2, res3])
# 把生成的数添加到事先定义好的容器里
code_list.append(code)
# 利用字符串拼接计数把列表里的元素拼接起来
ver_code = ''.join(code_list)
return ver_code
res = v_code(n)
print(res)
![image]()
2、os模块
# os模块是和操作系统打交道的
# 导入os模块
import os
# 1、创建单级目录(文件夹)
os.mkdir('精美视频合集')
os.mkdir('精美视频合集/演员') # 创建多级目录报错
# 2、创建多级目录(文件夹)
os.makedirs('精美视频合集/演员')
# 3、删除空目录
# 删除单级空目录
os.rmdir('精美视频合集') # 删除的目录不为空报错
# 删除多级空目录
os.removedirs('精美视频合集/演员') # 删除的目录不为空报错
# 4、获取当前文件所在的路径(可以嵌套)
print(os.path.dirname(__file__))
# 5、路径拼接(能够识别不同操作系统的分隔符问题)
data_path = os.path.dirname(__file__)
file_path = os.path.join(data_path, '2、os模块.py')
print(file_path)
# 6、列举出指定路径下的文件名称(任意类型文件),返回为列表
movie_list = os.listdir('D:\python workplace\day18\笔记\精美视频合集\演员')
print(movie_list)
# 获取文件所在的路径
movie_dirname = os.path.join(data_path, '精美视频合集/演员')
# 练习
while True:
for i, j in enumerate(movie_list):
print(i + 1, j)
choice = input('输入你想要看的文件编号:').strip()
if choice.isdigit():
choice = int(choice)
if choice in range(len(movie_list) + 1):
# 获取编号对应的文件名称
file_name = movie_list[choice - 1]
# 拼接完整的文件路径,利用路径拼接,可以自动识别当前操作系统的路径分隔符
file_path = os.path.join(movie_dirname, file_name)
# 利用文件操作读写文件
with open(file_path, 'r', encoding='utf8') as f:
print(f.read())
# 7、删除一个文件
os.remove('a.txt')
# 8、修改文件名称
os.rename('旧文件名称', '新文件名称')
# 9、获取当前工作路径
print(os.getcwd())
# 10、切换路径
os.chdir('E:/')
with open(r'a.txt','wb') as f:
pass
# 10、判断当前路径是否存在
print(os.path.exists('a.txt')) # 不存在则返回False,存在返回True
# 11、判断当前路径是否是文件
print(os.path.isfile('验证码.py')) # 返回True
print(os.path.isfile('精美视频合集')) # 返回False
# 12、判断当前路径是否是文件夹
print(os.path.isdir('验证码.py')) # 不是返回False,是返回True
# 13、获取文件大小(字节数),返回字节数
print(os.path.getsize('验证码.py'))
![image]()
3、sys模块
# sys模块主要是和python解释器打交道
# 导入sys模块
import sys
# 1、返回系统路径
print(sys.path)
# 2、返回解释器版本
print(sys.version)
# 3、返回解释器所在的当前平台
print(sys.platform)
# 4、获取当前执行文件的绝对路径
print(sys.argv)
try:
username = sys.argv[1]
password = sys.argv[2]
if username == 'jason' and password == '123':
print('欢迎光临')
import test1
else:
print('用户名或密码错误')
except Exception:
print('请输入用户名和密码')
print('目前只能让你体验一下(游客模式)')
![image]()
4、json模块
# json模块又叫序列化模块
'''
json模块可以做到格式数据实现跨语言传输
'''
# 导入json模块
import json
d = {'username': 'jason', 'age': 18}
# 1、将python其他数据转化为json格式字符串(序列化)
res = json.dumps(d)
print(res, type(res)) # {"username": "jason", "age": 18} <class 'str'>
'''
json格式字符串的标志,双引号
'''
# 2、将json格式字符串转化为当前语言对应的某个数据类型(反序列化)
res1 = json.loads(res)
print(res1, type(res1)) # {'username': 'jason', 'age': 18} <class 'dict'>
bytes_data = b'{"username": "jason", "age": 18}'
bytes_str = bytes_data.decode('utf8')
print(bytes_str)
bytes_dict = json.loads(bytes_str)
print(bytes_dict, type(bytes_str)) # {'username': 'jason', 'age': 18} <class 'str'>
"""
暂且可以简单的理解为
序列化就是将其他数据类型转换成字符串过程
json.dumps()
反序列化就是将字符串转换成其他数据类型
json.loads()
"""
# 将字典d写入文件
with open(r'a.txt', 'w', encoding='utf8') as f:
f.write(str(d))
# 将字典d取出来
with open(r'a.txt', 'r', encoding='utf8') as f:
data = f.read()
print(dict(data))
# 将字典d写入文件
with open(r'a.txt', 'w', encoding='utf8') as f:
res = json.dumps(d) # 序列化成json格式字符串
f.write(res)
# 将字典d取出来
with open(r'a.txt', 'r', encoding='utf8') as f:
data = f.read()
res1 = json.loads(data)
print(res1, type(res1))
d1 = {'username': 'tony', 'pwd': 123, 'hobby': [11, 22, 33]}
with open(r'a.txt', 'w', encoding='utf8') as f:
json.dump(d1, f)
with open(r'a.txt', 'r', encoding='utf8') as f:
res = json.load(f)
print(res, type(res))
d1 = {'username': 'tony好帅哦 我好喜欢', 'pwd': 123, 'hobby': [11, 22, 33]}
print(json.dumps(d1, ensure_ascii=False))
"""
# 并不是所有的数据类型都支持序列化
json.JSONEncoder 查看支持的数据类型
"""
![image]()
5、subprocess模块
import subprocess
"""
1.可以基于网络连接上一台计算机(socket模块)
2.让连接上的计算机执行我们需要执行的命令
3.将命令的结果返回
"""
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')) # 获取错误命令执行之后的结果
"""
windows电脑内部编码默认为GBK
"""
![image]()