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

1.random模块

方法 作用
random.random() 随机产生一个0-1之间的小数
random.uniform(1,6)) 随机产生一个1-6之间的小数
random.randint(1, 6) 随机产生一个1-6之间的整数
random.choice(['特等奖', '一等奖', '二等奖',]) 随机抽取一个
random.sample([1,3,5,6,7], 3) 随机抽取指定样本量
random.shuffle([2, 3, 4, 5, 6, 7]) 随机打乱容器类型中的诸多元素
# 搜狗一道笔试题:编写能够产生五位数的随机验证码(小写,大写字母,还有数字)
import random

def check_code(n):
    random_int = str(random.randint(0, 9))
    random_A = chr(random.randint(65, 90))
    random_a = chr(random.randint(97, 122))
    check_code = ''
    for i in range(n):
        res = random.choice([random_int, random_A, random_a])
        check_code += res
    return check_code

print(check_code(6))  # d22ddM

2. os模块

# 与操作系统打交道
功能 方法
创建单级目录(文件夹) os.mkdir()
创建多级目录(文件夹) os.makedirs()
删除空目录(文件夹) os.rmdir()
获取当前文件所在的路径(可以嵌套为上一层路径) os.path.dirname(file)
路径拼接(******) 能够自动识别不同操作系统分隔符问题 os.path.join()
列举出指定路径下的文件名称(任意类型文件) os.listdir()
删除一个文件 os.remove('a.txt')
修改文件名称 os.rename('老文件名','新文件名')
获取当前工作路径 os.getcwd()
切换路径 os.chdir()
判断当前路径是否存在 os.path.exists()
判断当前路径是否是文件 os.path.isfile()
判断当前路径是否是文件夹 os.path.isdir()
获取文件大小(字节数) os.path.getsize()

3.sys模块

# 与python解释器打交道
方法 作用
sys.path 文件
sys.version python版本号
sys.platform 操作系统号
sys.argv 获取当前执行文件的绝对路径
# 案例:
try:
    username = sys.argv[1]
    password = sys.argv[2]
    if username == 'jason' and password == '123':
        print('正常执行文件内容')
    else:
        print('用户名或密码错误')
except Exception:
    print('请输入用户名和密码')
    print('目前只能让你体验一下(游客模式)')	

4.subprocess模块

# 1. 作用:
	"""
    1.可以基于网络连接上一台计算机(socket模块)
    2.让连接上的计算机执行我们需要执行的命令
    3.将命令的结果返回
	"""
# 2. 案例:
	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'))  # 获取错误命令执行之后的结果
# 3. 知识点补充
	"""windows电脑内部编码为GBK"""

5.序列化模块

1. json模块的作用:可以让数据进行跨语言交流

2. 序列化与反序列化的说明
1>.将python其他数据转换成json格式字符串(序列化)
	方法:json.dumps(数据)
    import json
    dic = {'a':13, 'x':24}
    res = json.dumps(dic)
    print(res,type(res))  # {"a": 13, "x": 24} <class 'str'>
            
2>.将json格式字符串转成当前语言对应的某个数据类型(反序列化)
    方法:json.loads(json格式化字符串)
	res1 = json.loads(res)
	print(res1, type(res1)) # {'a': 13, 'x': 24} <class 'dict'>   

3. json模块的数据转化和其他数据转化方法的区别(可保持数据类型不变)
    
4. json模块在文件数据保存中的作用
	数据在存取前后,对数据进行json方法处理,可以使数据类型保持不变
    # 普通的方法将字典存入文档前后的变化
    
    # json方法将字典存入文件之后的变化
    
    # json方法将字典存入文件的简便方法

5. 如何将json模式的字符串的中文字符以文字类型呈现
	dic = {'name1': 'Tony', 'name2': '小明'}
	print(json.dumps(dic)) # {"name1": "Tony", "name2": "\u5c0f\u660e"}
	print(json.dumps(dic,ensure_ascii=False))# {"name1": "Tony", "name2": "小明"}
    
6. 序列化适合一切数据类型么
	# 并不是所有的数据类型都支持序列化 —— json.JSONEncoder可查看支持的数据类型

补充:

# 练习:将每个用户输入的字典,单独存在放自己的文件里
import os
import json

BASE_PATH = os.path.dirname(os.path.dirname(__file__))
db_path = os.path.join(BASE_PATH, 'db')

username = input('请输入名字:')
password = input('请输入密码:')
dic = {}
dic['username'] = username
dic['password'] = password
user_path = os.path.join(db_path, '%s.json' % username)
with open(user_path, 'w', encoding='utf8') as f:
    json.dump(dic, f)
posted @ 2021-11-26 20:08  recordlife  阅读(35)  评论(0编辑  收藏  举报