random随机数模块,os模块,sys模块,序列化模块,subprocess模块
random随机数模块
import random print(random.random()) # 随机产生一个0-1之间的小数 print(random.randint(1,6)) # 随机产生一个1-6之间的整数 print(random.uniform(1,6)) # 随机产生一个1-6之间的小数 print(random.choice((['特等奖','一等奖','二等奖','谢谢惠顾']))) # 随机抽取一个 print(random.sample(['安徽省','江苏省','湖南省','山东省','广东省','台湾省'],3)) # 随机抽取指定样本 l=[2,3,4,5,6,7,8,9,10,'J','Q','K','A'] random.shuffle(l) # 随机打乱容器类型中的诸多元素 print(l)
随机验证码可以是由数字、小写字母、大写字母任意组合
编写能够产生五位数的随机验证码
import random def get_code(n): # 提前定义一个存储验证码的变量 code='' # 由于需要产生五位,每一位的操作都是一样的,所以坑定需要使用循环 for i in range(n): # 随机产生一个数字 random_int=str(random.randint(0,9)) # 随机产生一个大写字母 random_upper=chr(random.randint(65,90)) # 随机产生一个小写字母 random_lower=chr(random.randint(97,122)) # 随机选取一个 temp=random.choice([random_int,random_upper,random_lower]) # 拼接到字符串中 code += temp return code code1=get_code(5) code2=get_code(8) print(code1,code2)
随机点名
import random import time # 名单 list1=['张三','李四','王五','jason','marry','jack'] # 点名 def get_name(count_down): for i in range(count_down): print('\r倒计时%s秒'%(count_down-i),end='') time.sleep(1) print('\r***** %s *****' % random.choice(list1)) # 倒计时 get_name(3)
os模块
***os模块与操作系统打交道,sys模块主要与python解释器打交道***
os.path.join(BASE_DIR,'视频合集') 路径拼接,能够自动识别不同操作系统分隔符问题
import os # 获取当前文件所在的路径(可以嵌套,则为上一层路径) BASE_DIR=os.path.dirname(__file__) # 路径拼接,能够自动识别不同操作系统分隔符问题 movie_dir=os.path.join(BASE_DIR,'视频合集') # 列举出指定路径下的文件名称(任意类型文件) data_movie_list=os.listdir('D:\py001\demo\视频合集') while True: for i,j in enumerate(data_movie_list): print(i+1,j) choice=input('请选择你想看的文件编号:').strip() if choice.isdigit(): choice=int(choice) 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())
import os # 创建单级目录(文件夹) os.mkdir('视频合集') # 创建多级目录(文件夹 os.makedirs(r'分类小说\武侠小说\2021选集') # 删除空目录 os.rmdir(r'分类小说') os.removedirs(r'分类小说') # 删除一个文件 os.remove('a.txt') # 修改文件名称 os.rename('老文件名','新文件名') # 获取当前工作路径 print(os.getcwd()) # 切换路径 os.chdir('D:/') with open(r'a.txt','wb') as f: pass # 判断当前路径是否存在 print(os.path.exists('a.txt')) # False # 判断当前路径是否是文件 print(os.path.isfile('视频合集')) # False # 判断当前路径是否是文件夹 print(os.path.isdir('视频合集')) # True # 获取文件大小(字节数) print(os.path.getsize(r'a.txt'))
sys模块
主要与python解释器打交道
import sys print(sys.path) print(sys.version) print(sys.platform) # win32 # 获取当前执行文件的绝对路径 print(sys.argv) # ['D:/py001/demo/run.py'] try: username=sys.argv[1] password=sys.argv[2] if username=='jason' and password=='123': print('正常执行文件内容') else: print('用户名或密码错误') except Exception: print('请输入用户名和密码') print('目前只能让你体验一下(游客模式)')
序列化模块
json格式数据:跨语言传输
序列化:将python其他数据转换成json格式字符串
反序列化:将json格式字符串转成当前语言对应的某个数据类型
import json d={'username':'jason','pwd':123} # 将python其他数据转换成json格式字符串(序列化) res=json.dumps(d) # print(res,type(res)) # {"username": "jason", "pwd": 123}# 将json格式字符串转成当前语言对应的某个数据类型(返序列化) res1=json.loads(res) print(res1,type(res1)) # {'username': 'jason', 'pwd': 123} bytes_data=b'{"username":"jason","pwd":123}' bytes_str=bytes_data.decode('utf8') bytes_dict=json.loads(bytes_str) print(bytes_dict,type(bytes_dict)) # 将字典d写入文件 d={'username':'jason','pwd':123} with open(r'a.txt','w',encoding='utf8') as f: res=json.dumps(d) # 序列化成json格式字符串 f.write(res) # {"username": "jason", "pwd": 123} # 将字典d取出来 with open(r'a.txt','r',encoding='utf8') as f: data=f.read() res1=json.loads(data) # json格式字符串反序列化成字典 print(res1,type(res1)) # {'username': 'jason', 'pwd': 123} 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)) # {"username": "tony好帅哦 我好喜欢", "pwd": 123, "hobby": [11, 22, 33]} """ 并不是所有的数据类型都支持序列化 json.JSONEncoder 查看支持的数据类型 """
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 """