常用模块

常用模块

image

1、random模块

# random模块
'''
随机数模块
'''
# 导入random模块
import random

print(random.random())  # 生成0到1内随机一个小数
print(random.randint(1, 5))  # 随机生成指定区间里一个整数
print(random.uniform(1, 5))  # 随机生成指定区间里的一个小数
print(random.choice([1, 2, 3, 4]))  # 随机抽取一个样本数量
print(random.choice(['一等奖', '二等奖', '三等奖', '特等奖', '谢谢惠顾']))
print(random.sample(['一等奖', '二等奖', '三等奖', '特等奖', '谢谢惠顾'], 2))  # 随机抽取指定的样本数量
l = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
random.shuffle(l)  # 随机打乱容器类型中的诸多元素
print(l)  # [2, 3, 'Q', 6, 10, 'A', 5, 9, 'J', 4, 8, 7, 'K']
# 随机生成位数为5的验证码,每一位都由数字,大写字母和小写字母中随机
# 导入random模块
# import random

# 提前定义一个存储验证码的容器
code_list = []
# 根据用户的输入生成不同位数的验证码
n = input('验证码位数:').strip()
n = int(n)


def v_code(n):
    for i in range(n):
        # 生成一个随机数
        res1 = str(random.randint(0, 9))
        # 随机生成一个大写字母
        res2 = chr(random.randint(65, 90))
        # 随机生成一个小写字母
        res3 = chr(random.randint(97, 122))
        # 随机从大写字母,小写字母,数字中选择一个数
        code = random.choice([res1, res2, res3])
        # 把生成的数添加到事先定义好的容器里
        code_list.append(code)
    # 利用字符串拼接计数把列表里的元素拼接起来
    ver_code = ''.join(code_list)
    return ver_code

res = v_code(n)
print(res)


image

2、os模块

# os模块是和操作系统打交道的
# 导入os模块
import os

# 1、创建单级目录(文件夹)
os.mkdir('精美视频合集')
os.mkdir('精美视频合集/演员')  # 创建多级目录报错
# 2、创建多级目录(文件夹)
os.makedirs('精美视频合集/演员')
# 3、删除空目录
# 删除单级空目录
os.rmdir('精美视频合集')  # 删除的目录不为空报错
# 删除多级空目录
os.removedirs('精美视频合集/演员')  # 删除的目录不为空报错
# 4、获取当前文件所在的路径(可以嵌套)
print(os.path.dirname(__file__))
# 5、路径拼接(能够识别不同操作系统的分隔符问题)
data_path = os.path.dirname(__file__)
file_path = os.path.join(data_path, '2、os模块.py')
print(file_path)
# 6、列举出指定路径下的文件名称(任意类型文件),返回为列表
movie_list = os.listdir('D:\python workplace\day18\笔记\精美视频合集\演员')
print(movie_list)
# 获取文件所在的路径
movie_dirname = os.path.join(data_path, '精美视频合集/演员')
# 练习
while True:
    for i, j in enumerate(movie_list):
        print(i + 1, j)
    choice = input('输入你想要看的文件编号:').strip()
    if choice.isdigit():
        choice = int(choice)
        if choice in range(len(movie_list) + 1):
            # 获取编号对应的文件名称
            file_name = movie_list[choice - 1]
            # 拼接完整的文件路径,利用路径拼接,可以自动识别当前操作系统的路径分隔符
            file_path = os.path.join(movie_dirname, file_name)
            # 利用文件操作读写文件
            with open(file_path, 'r', encoding='utf8') as f:
                print(f.read())
# 7、删除一个文件
os.remove('a.txt')
# 8、修改文件名称
os.rename('旧文件名称', '新文件名称')
# 9、获取当前工作路径
print(os.getcwd())
# 10、切换路径
os.chdir('E:/')
with open(r'a.txt','wb') as f:
    pass
# 10、判断当前路径是否存在
print(os.path.exists('a.txt'))  # 不存在则返回False,存在返回True
# 11、判断当前路径是否是文件
print(os.path.isfile('验证码.py'))  # 返回True
print(os.path.isfile('精美视频合集'))  # 返回False
# 12、判断当前路径是否是文件夹
print(os.path.isdir('验证码.py'))  # 不是返回False,是返回True
# 13、获取文件大小(字节数),返回字节数
print(os.path.getsize('验证码.py'))

image

3、sys模块

# sys模块主要是和python解释器打交道
# 导入sys模块
import sys
# 1、返回系统路径
print(sys.path)
# 2、返回解释器版本
print(sys.version)
# 3、返回解释器所在的当前平台
print(sys.platform)
# 4、获取当前执行文件的绝对路径
print(sys.argv)
try:
    username = sys.argv[1]
    password = sys.argv[2]
    if username == 'jason' and password == '123':
        print('欢迎光临')
        import test1
    else:
        print('用户名或密码错误')
except Exception:
    print('请输入用户名和密码')
    print('目前只能让你体验一下(游客模式)')

image

4、json模块

# json模块又叫序列化模块
'''
json模块可以做到格式数据实现跨语言传输
'''
# 导入json模块
import json

d = {'username': 'jason', 'age': 18}
# 1、将python其他数据转化为json格式字符串(序列化)
res = json.dumps(d)
print(res, type(res))  # {"username": "jason", "age": 18}  <class 'str'>
'''
json格式字符串的标志,双引号
'''
# 2、将json格式字符串转化为当前语言对应的某个数据类型(反序列化)
res1 = json.loads(res)
print(res1, type(res1))  # {'username': 'jason', 'age': 18}  <class 'dict'>
bytes_data = b'{"username": "jason", "age": 18}'
bytes_str = bytes_data.decode('utf8')
print(bytes_str)
bytes_dict = json.loads(bytes_str)
print(bytes_dict, type(bytes_str))  # {'username': 'jason', 'age': 18} <class 'str'>
"""
暂且可以简单的理解为
    序列化就是将其他数据类型转换成字符串过程
        json.dumps()
    反序列化就是将字符串转换成其他数据类型
        json.loads()
"""
# 将字典d写入文件
with open(r'a.txt', 'w', encoding='utf8') as f:
    f.write(str(d))
# 将字典d取出来
with open(r'a.txt', 'r', encoding='utf8') as f:
    data = f.read()
print(dict(data))

# 将字典d写入文件
with open(r'a.txt', 'w', encoding='utf8') as f:
    res = json.dumps(d)  # 序列化成json格式字符串
    f.write(res)
# 将字典d取出来
with open(r'a.txt', 'r', encoding='utf8') as f:
    data = f.read()
res1 = json.loads(data)
print(res1, type(res1))

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

"""
# 并不是所有的数据类型都支持序列化
json.JSONEncoder  查看支持的数据类型
"""

image

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

image

posted @ 2021-11-26 19:57  PyLy  阅读(80)  评论(0)    收藏  举报

念两句诗

入我相思门,知我相思苦,长相思兮长相忆,短相思兮无穷极。
【唐代】李白