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
"""

相关