python内置模块2
一、random模块
常用方法
import random print(random.randint(1, 5)) # 随机生成一个一到五的整数 print(random.choice([1, 2, 3])) # 随机抽取一个元素 print(random.random()) # 随机生成一个0到1之间的小数 print(random.sample(['1', '2', '3', '4', '5'], 3)) # 按照第二个参数抽取相对应个数样本中的元素 l = [1, 2, 3, 4, 5, 6, 7, 8, 9] random.shuffle(l) # 随机打乱顺序 print(l) # [2, 5, 6, 1, 3, 4, 8, 7, 9]
实战训练 生成n位验证码
def func(n):
code = ''
for i in range(n):
num = str(random.randint(0, 9))
alp = chr(random.randint(97, 122))
Alp = chr(random.randint(65, 90))
res = random.choice([num, alp, Alp])
code += res
return code
code1 = func(5)
code2 = func(6)
code3 = func(7)
print(code1, code3, code2)
二、os模块(主要和系统打交道)
常用方法
import os
# print(os.path.dirname(__file__)) # 获取当前路径
# print(os.getcwd()) # 获取工作路径
# os.chdir('D:/') # 修改路径
# os.mkdir('haha') # 创建单个文件夹
# os.makedirs('文件1 \ 文件2') # 创建多个文件夹
# os.rmdir('haha') # 删除空文件夹
# os.removedirs('文件1 \ 文件2') # 删除多个空文件夹
# os.remove('a.txt') # 删除文件
# print(os.listdir('D:\pythonProject1\day21')) # 获取指定路径下的文件名称
# os.path.join() # 拼接路径
# os.path.isdir() # 判断是否有文件夹 返回True或者False
# os.path.isfile() # 判断是否有文件 返回True或者False
# os.path.exists() # 判断当前路径是否存在 返回True或者False
# os.rename('老文件名', '新文件名') # 修改文件名
# os.path.getsize() # 判断文件的大小(字节数)
实战训练
import os
base_dir = os.path.dirname(__file__)
movie_dir = os.path.join(base_dir, '文件1')
movie_list = os.listdir('D:\pythonProject1\day21\文件1')
while True:
for i, j in enumerate(movie_list):
print(i + 1, j, end=' ')
choice = input("""
请选择您要
您要观看的电影编号>>>:
""")
if choice.isdigit():
choice = int(choice)
if choice in range(len(movie_list) + 1):
movie_file = movie_list[choice - 1]
file_path = os.path.join(movie_dir, movie_file)
with open(file_path, 'r', encoding='utf8') as f:
print(f.read())
else:
print('请输入正确的编号')
else:
print('请输入纯数字')

三、sys模块(主要和解释器打交道)
import sys
print(sys.path) # 查看当前文件目录路径
print(sys.version) # 查看解释器版本
print(sys.platform) # win32
print(sys.argv) # 查看执行文件的绝对路径
# argv实际应用 可以给一个文件加密
try:
username = sys.argv[1]
password = sys.argv[2]
if username == 'mike' and password == '123':
print('正常执行文件内容')
else:
print('用户名或密码错误')
except Exception:
print('请输入用户名和密码')
print('目前只能让你体验一下(游客模式)')
四、序列化模块
jason格式数据:跨语言传输文件
import json
d = {'name': 'mike', 'age': 18, 'hobby': ['play', 'study']}
# 序列化:就是将其他语言的数据转换成可以统一识别的json格式数据
res = json.dumps(d) # 将字典转换成json格式数据
print(res) # {"name": "mike", "age": 18, "hobby": ["play", "study"]}
# 反序列化:将格式数据转变为可以识别的数据类型
res1 = json.loads(res) # 将json格式数据转变为python能识别的数据
print(res1) # {'name': 'mike', 'age': 18, 'hobby': ['play', 'study']}
# 将字典以格式化文件存入文件
import json
d = {'name': 'mike', 'age': 18, 'hobby': ['play', 'study']}
res = json.dumps(d)
with open(r'a.txt', 'a', encoding='utf8') as f:
f.write(res)
# 简便写入方法
with open(r'a.txt', 'a', encoding='utf8') as f1:
json.dump(d, f1)
# 将json格式数据取出
with open(r'a.txt', 'r', encoding='utf8') as f:
res = f.read()
res1 = json.loads(res) # 将json格式化数据转为python数据类型
print(res1) # 'name': 'mike', 'age': 18, 'hobby': ['play', 'study']}
# 简便写法
with open('a.txt', 'r', encoding='utf8') as f1:
res1 = json.load(f1)
print(res1) # {'name': 'mike', 'age': 18, 'hobby': ['play', 'study']}
五、subprocess模块
subprocess模块的作用:
1. 可以基于网络连接到另一台电脑
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')) # 获取错误命令执行之后的结果
PS:国内windows电脑内部编码默认为GBK

浙公网安备 33010602011771号