内置模块2

内容概要

  • random模块
  • os模块
  • sys模块
  • 序列化模块
  • subprocess模块

random模块

import random
print(random.random())  # 0-1之间的小数

image

import random
print(random.randint(1, 9))  # 随机产生1-9之间的整数

image

import random
print(random.uniform(1, 9))  # 随机产生1-9之间的小数

image

import random
print(random.choice([1, 2, 3]))  # 随机抽取一个

image

import random
print(random.sample(['春', '夏', '秋', '冬'], 3))  # 随机抽取指定样本

image

import random
l = [1, 2, 3, 4, 5, 6]
random.shuffle(l) # 随机打乱列表中的元素
print(l)

image

笔试题,随机产生5个数的验证码
import random
for i in range(5):
    ch = ''
    range_int = str(random.choice([0, 9]))
    range_upper = chr(random.choice([65, 90]))
    range_lower = chr(random.choice([97, 122]))
    res = random.choice([range_int, range_upper, range_lower])
    ch += res
    print(ch, end='')

image

os模块

import os
os.mkdir(r'书籍')  # 创建单级目录

image

import os
os.makedirs(r'图集1/影集1')  # 创建多级目录

image

import os
os.rmdir(r'')
os.removedirs(r'')  # 删除空目录
import os
BASE_DIR = os.path.dirname(__file__)  # 获取当前文件的路径
a = os.path.join(BASE_DIR, '书籍')  # 路径拼接
a1 = os.listdir('/Users/mac/PycharmProjects/01/书籍')  # 列举出指定文件下的名称
while True:
    for i, j in enumerate(a1):
        print(i + 1, j)
    choice = input('查看的编号: ').strip()
    if choice.isdigit():
        choice = int(choice)
        if choice in range(len(a1) + 1):
            name = a1[choice - 1]  # 获取编号对应的文件名称
            rain = os.path.join(a, name)  # 拼接文件的完整路径
            with open(rain, 'r', encoding='utf8') as f:
                print(f.read())  # 利用文件操作读写文件

image

import os
os.remove('xxx')  # 删除一个文件
os.rename('老文件名', '新文件名' )  # 修改文件名
print(os.getcwd())  # 获取当前工作路径
os.chdir('')  # 切换路径
print(os.path.exists(''))  # 判断当前路径是否存在
print(os.path.isfile(''))  # 判断当前路径是否是文件
print(os.path.isdir(''))  # 判断当前路径是否是文件夹
print(os.path.getsize(''))  # 获取文件大小(字节数)

sys模块

主要与python解释器打交道
import sys
print(sys.path)  # 查看当前可访问的所有路径
print(sys.version)  # 查看当前python解释器版本号,和其他详细信息
print(sys.platform)  # 查看电脑系统平台
print(sys.argv)  # 获取当前执行文件的绝对路径

image

import sys
try:
    username = sys.argv[1]
    password = sys.argv[2]
    if username == 'sss' and password == '111':
        print('文件正常执行')
    else:
        print('用户名或密码错误')
except Exception:
    print('请输入用户名和密码')
    print('体验(游客模式)')

image

序列化模块

json格式数据:跨语言传输
import json
dic = {'name': 'sss', 'age': 18, 'hobby': 'music'}
res = json.dumps(dic)  # 将python其他数据专程json格式字符串
print(res)
print(json.loads(res))  # 反序列化,将json格式字符串转成当前语言的某个数据类型

image

import json
a = b'{"name": "sss", "age": 18, "hobby": "music"}'  # 二进制
z = a.decode('utf8')  # 将二进制转成json格式字符串
c = json.loads(z)  # 然后转成字典
print(c, type(c))

image

把字典写入文件在取出
import json
dic = {'name': 'sss', 'age': 18, 'hobby': 'music'}
with open(r'a.txt', 'w', encoding='utf8') as f:
    res = json.dumps(dic)
    print(f.write(res))
with open(r'a.txt', 'r', encoding='utf8') as f1:
    d = f1.read()
    g = json.loads(d)
    print(g, type(g))

image

dic = {'name': 'sss', 'age': 18, 'hobby': 'music'}
with open(r'a.txt', 'w', encoding='utf8') as f:
    json.dump(dic, f)
with open(r'a.txt', 'r', encoding='utf8') as f2:
    res = json.load(f2)
    print(res, type(res))

image

dic = {'name': 'sss', 'age': 18, 'hobby': '音乐'}
print(json.dumps(dic, ensure_ascii=False))

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

subprocess模块

1.可以基于网络连接上一台计算机(socket模块)
2.让连接上的计算机执行我们需要执行的命令
3.将命令的结果返回
import subprocess
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'))

image
windows电脑内部编码默认是GBK

image

posted @ 2021-11-27 16:54  一览如画  阅读(45)  评论(0)    收藏  举报