random模块
import random
randnm.random() # 随机产生一个0-1之间的小数
randnm.randint(起始数字,结尾数字) # 括号内添加搜索范围内的数字
random.uniform(起始数字,结尾数字) # 括号内添加搜索范围内的小数
random.choice(支持所有数据类型) # 随机抽取括号内支持索引的数据类型
random.sample(支持索引数据类型,取出数量) # 随机取出一定数量的样本
random.shuffle(容器类型) # 随机打乱容器类型元素
笔试题
随机生成由数字大写字母小写字母任意组合的验证码,可以是任意位数
#创建一个函数,传入参数为验证码产生的次数
def get_code(n):
#提前定义一个储存验证码的变量
code='' # 也可以是列表
# 循环次数为传入的参数
for i in range(n):
# 利用模块随机产生一个零到九的数字,然后转化为字符串
random1 = str(random.random(0,9))
# 随机产生一个数字,然后转化为ascii码对应字符
random2 = chr(random.rangdom(65-90))
# 随机产生一个数字,然后转化为ascii码对应字符
random3 = chr(random.rangdom(97-122))
# 将上面产生的三个值组织成列表随机选中下面列表中的一个值
temp = random.choice([random1,random2,random3])
# 原字符串与随机取出的字符串拼接
code += temp
# 返回产生的字符串
return code
# 里面就可以传入参数,表示需要几位数的要证码,返回来的值接收之后就可以正常使用
code = get_code()
os模块
'''与操作系统打交道的模块'''
import os
1.创建单级目录(文件夹)
os.mkdir('文件夹名称') # 产生的文件夹与程序处在同一级目录
os.mkdir('文件夹名称\下一级文件夹名称') # 会报错,没办法产生其他层次文件夹
2.创建多级目录(文件夹)
os.makedirs('文件夹名称\下一级名称\下一级名称\...) # 程序同级产生文件夹之后一次向下
3.删除空目录(文件夹)
os.rmdir(r'空文件夹') # 需要与程序同级但是如果是绝对路径可以精准删除
os.removedirs(r'空文件夹\2空\3空') # 需要与程序同级但是如果是绝对路径可以精准删除并且一次向上删除空文件夹
import os
os.rmdir(r'D:\Pycharm\11.26day\空1\空2')
os.removedirs(r'D:\Pycharm\11.26day\空1\空2') # 精准制导
4.获取当前文件所在的路径
os.path.dirname(__file__) # 当前路径
os.path.dirname(os.path.dirname(os.path.dirname(__file__))) # 嵌套使用,一层返回一级,可多层
5.路径拼接(重要) # 自动识别不同的操作系统分隔符的问题
与'4'组合使用,效果更佳
os.path.join('路径1','路径2') # 可以传入当前路径,在添加下级路径,根据自己选择
6.列举出指定路径下文件名称(任意类型文件)
os.listdir('路径') # 找到当前路径下所有文件,形成列表
循环#
data_movie_list = os.listdir('D:\py20\day21\老师教学视频')
while True:
# 循环枚举内为数字。可以赋值两个名,前一个为数字0开始,后面的数据离的值
for i, j in enumerate(data_movie_list):
# 打印
print(i + 1, j)
# 获取用户输入
choice = input('请选择你想要看的文件编号>>>:').strip()
# 判断用户输入是否为数字
if choice.isdigit():
# 将用户输入的转化为整形
choice = int(choice)
# 判断用户输入的数字是否在0与数据的长度+1的数字里面
if choice in range(len(data_movie_list) + 1):
# 获取编号对应的文件名称 取出来的为列表根据索引找到相对应的文件名称
file_name = data_movie_list[choice - 1]
# 拼接文件的完整路径(******)
file_path = os.path.join(movie_dir, file_name) # 专门用于路径拼接 并且能够自动识别当前操作系统的路径分隔符
# 利用文件操作读写文件
with open(file_path, 'r', encoding='utf8') as f:
print(f.read())
# 结束
7.删除一个文件
os.remove('文件名称') # 需要在同级,否则需要绝对路径
8.修改文件名称
os.rename('原文件名','新文件名') # 可以是文件夹或者文件
os.rename(r'D:\Pycharm\11.26day\测试文件夹\原文件名.txt',r'D:\Pycharm\11.26day\新文件名.txt') # 也可以绝对路径更改,创建到不同的文件夹内
9.获取当前工作路径
os.getcwd() # 当前程序运行所在的路径
10.切换路径
os.chdir('D:/')
11.判断当前路径是否存在
os.path.exists('文件或文件夹') # 返回结果为布尔值 可以是想多路径,或者绝对路径
12.判断当前路径是否是文件
os.path.isifle('文件') # 返回结果为布尔值 绝对路径或相对路径
13.判断当前路径是否是文件夹
os.path.isdir('文件夹') # 返回结果为布尔值 绝对路径或相对路径
14.获取文件大小(字节数)
os.path.getsize('文件或文件夹') # 返回字节数 绝对路径或相对路径
sys模块
主要与Python解释器打交道
import sys
sys.path # 当前程序所在的文件夹同级所有文件夹绝对路径(返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值)
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('目前只能让你体验一下(游客模式)')
序列化模块(json格式数据:跨语言传输)
import json
1.将Python其他数据类型转换成json格式字符串(序列化)
json.dumps(Python数据待转换的参数)
2.将json格式字符串转化成当前语言对应的某个数据类型(反序列化)
json.loads(josn格式化字符串待转的参数)
在将序列化后的字符串写入文件过程中可以使用其他
json.dump(待转化数据,操作文件名(f)) # 写入,直接转化为json格式化字符串
json.load(操作文件名(f)) # 读取出来之后自动转化为Python的数据类型
# 包含汉字(序列化之后会自动变成'字节')
d1 = {'username': 'tony好帅哦 我好喜欢', 'pwd': 123,'hobby':[11,22,33]}
json.dumps(d1,ensure_ascii=False) # 可以使用ensure_sacii = False 将内容不进行转变
'''
不是所有的Python数据类型都可以序列换
json.JSONEncoder 查看支持的类型
'''
subprocess模块
import subprocess
1.可以基于网络链接上一台计算机(socket模块)
2.让连接上的计算机执行我们需要执行的命令
3.将命令的结果返回
# 执行的命令
res = subprocess.Popen('tasklist',
shell=True,
# 正确的执行命令
stdout=subprocess.PIPE,
# 错误的执行命令
stderr=subprocess.PIPE
)
命令正确的结果 # 需要解码
res.stdout.read().decode('gbk') # 获取正确命令执行之后的结果
命令错误的结果
res.stderr.read().decode('gbk') # 获取错误命令执行之后的结果
内地windows电脑内部编码默认为GBK
作业指导
将用户输入的数据以json模块保存到文件内
import json
import os
BASE_DIR = os.path.dirname(__file__)
db_path = os.path.join(BASE_DIR,'db')
# username = input('username>>>:')
# password = input('password>>>:')
# file_name = os.path.join(db_path,'%s.json'%username)
# with open(file_name,'w',encoding='utf8') as f:
# data_dict = {'name':username,'pwd':password}
# json.dump(data_dict,f)
"""
json格式数据存储到文本文件中 可以给文件后缀名命名为.json
"""