1.random模块
![](https://img2020.cnblogs.com/blog/2519584/202111/2519584-20211126200730622-1872558651.jpg)
方法 |
作用 |
random.random() |
随机产生一个0-1之间的小数 |
random.uniform(1,6)) |
随机产生一个1-6之间的小数 |
random.randint(1, 6) |
随机产生一个1-6之间的整数 |
random.choice(['特等奖', '一等奖', '二等奖',]) |
随机抽取一个 |
random.sample([1,3,5,6,7], 3) |
随机抽取指定样本量 |
random.shuffle([2, 3, 4, 5, 6, 7]) |
随机打乱容器类型中的诸多元素 |
# 搜狗一道笔试题:编写能够产生五位数的随机验证码(小写,大写字母,还有数字)
import random
def check_code(n):
random_int = str(random.randint(0, 9))
random_A = chr(random.randint(65, 90))
random_a = chr(random.randint(97, 122))
check_code = ''
for i in range(n):
res = random.choice([random_int, random_A, random_a])
check_code += res
return check_code
print(check_code(6)) # d22ddM
2. os模块
![](https://img2020.cnblogs.com/blog/2519584/202111/2519584-20211126200746294-381935447.jpg)
# 与操作系统打交道
功能 |
方法 |
创建单级目录(文件夹) |
os.mkdir() |
创建多级目录(文件夹) |
os.makedirs() |
删除空目录(文件夹) |
os.rmdir() |
获取当前文件所在的路径(可以嵌套为上一层路径) |
os.path.dirname(file) |
路径拼接(******) 能够自动识别不同操作系统分隔符问题 |
os.path.join() |
列举出指定路径下的文件名称(任意类型文件) |
os.listdir() |
删除一个文件 |
os.remove('a.txt') |
修改文件名称 |
os.rename('老文件名','新文件名') |
获取当前工作路径 |
os.getcwd() |
切换路径 |
os.chdir() |
判断当前路径是否存在 |
os.path.exists() |
判断当前路径是否是文件 |
os.path.isfile() |
判断当前路径是否是文件夹 |
os.path.isdir() |
获取文件大小(字节数) |
os.path.getsize() |
3.sys模块
![](https://img2020.cnblogs.com/blog/2519584/202111/2519584-20211126200800496-541478556.png)
# 与python解释器打交道
方法 |
作用 |
sys.path |
文件 |
sys.version |
python版本号 |
sys.platform |
操作系统号 |
sys.argv |
获取当前执行文件的绝对路径 |
# 案例:
try:
username = sys.argv[1]
password = sys.argv[2]
if username == 'jason' and password == '123':
print('正常执行文件内容')
else:
print('用户名或密码错误')
except Exception:
print('请输入用户名和密码')
print('目前只能让你体验一下(游客模式)')
4.subprocess模块
# 1. 作用:
"""
1.可以基于网络连接上一台计算机(socket模块)
2.让连接上的计算机执行我们需要执行的命令
3.将命令的结果返回
"""
# 2. 案例:
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')) # 获取错误命令执行之后的结果
# 3. 知识点补充
"""windows电脑内部编码为GBK"""
5.序列化模块
1. json模块的作用:可以让数据进行跨语言交流
2. 序列化与反序列化的说明
1>.将python其他数据转换成json格式字符串(序列化)
方法:json.dumps(数据)
import json
dic = {'a':13, 'x':24}
res = json.dumps(dic)
print(res,type(res)) # {"a": 13, "x": 24} <class 'str'>
2>.将json格式字符串转成当前语言对应的某个数据类型(反序列化)
方法:json.loads(json格式化字符串)
res1 = json.loads(res)
print(res1, type(res1)) # {'a': 13, 'x': 24} <class 'dict'>
3. json模块的数据转化和其他数据转化方法的区别(可保持数据类型不变)
4. json模块在文件数据保存中的作用
数据在存取前后,对数据进行json方法处理,可以使数据类型保持不变
# 普通的方法将字典存入文档前后的变化
# json方法将字典存入文件之后的变化
# json方法将字典存入文件的简便方法
5. 如何将json模式的字符串的中文字符以文字类型呈现
dic = {'name1': 'Tony', 'name2': '小明'}
print(json.dumps(dic)) # {"name1": "Tony", "name2": "\u5c0f\u660e"}
print(json.dumps(dic,ensure_ascii=False))# {"name1": "Tony", "name2": "小明"}
6. 序列化适合一切数据类型么
# 并不是所有的数据类型都支持序列化 —— json.JSONEncoder可查看支持的数据类型
补充:
# 练习:将每个用户输入的字典,单独存在放自己的文件里
import os
import json
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
db_path = os.path.join(BASE_PATH, 'db')
username = input('请输入名字:')
password = input('请输入密码:')
dic = {}
dic['username'] = username
dic['password'] = password
user_path = os.path.join(db_path, '%s.json' % username)
with open(user_path, 'w', encoding='utf8') as f:
json.dump(dic, f)