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

 

posted @ 2021-11-26 19:31  椰子皮0oo0  阅读(30)  评论(0)    收藏  举报
1