Python进阶pythonPython

Python模块·Pickle读写文件(不同类型)

2023-01-10  本文已影响0人  技术老男孩

一、Pickle简介:

补充:

二、Pickle模块常用函数:

分类 关键字 / 函数 / 方法 说明
模块 import pickle 导入模块
pickle.dump(dict,fw) 将Python数据类型转换为2进制并保存到 pickle 格式的文件内
dict:写入的文件地址
fw:写文件对象
pickle.load(dict) 从pickle格式的文件中读取数据并转换为python的数据类型
dict:写入的文件地址

三、使用示例

import pickle

# 将其他类型的数据写入文件
list01 = [1, 2, "213", "he", {213: "23", "sad": 23}]
with open("/opt/list.data", mode="wb") as fw:
    pickle.dump(list01, fw)

with open("/opt/list.data", mode="rb") as fr:
    list_data = pickle.load(fr)

print(list_data)

四、练习:创建系统用户

需求:

import pickle
import subprocess
import randpass as rp

def create_user(username, file_name):
    result = subprocess.run(f'id {username} &> /dev/null', shell=True)
    if result.returncode == 0:
        print(f"用户{username}已存在,请重新输入!")
    else:
        # 随机生成8位密码
        password = rp.get_pass()
        print(f"您的用户名:{username},您的密码:{password}")
        # 创建用户
        subprocess.run(f"useradd {username}", shell=True)
        # 设置密码
        subprocess.run(f"echo {password} | passwd --stdin {username}", shell=True)

        # 将用户相关信息存储文件
        with open(file_name, mode="rb") as fr:
            userdb = pickle.load(fr)
        userdb[username] = password
        with open(file_name, mode="wb") as fw:
            pickle.dump(userdb, fw)
            print("userdb:", userdb)


if __name__ == '__main__':
    # 提示用户输入用户名
    user = input("输入用户名:\n")
    create_user(user, "/opt/user_db")
import random as rd
from string import digits as dg, ascii_letters as al


# 随机生成密码
def get_pass(pass_number=8):
    passwd = ""  # 最终密码
    for item in range(pass_number):
        # 密码拼接
        passwd += rd.choice(dg + al)
    return passwd


if __name__ == '__main__':
    print(get_pass())
上一篇下一篇

猜你喜欢

热点阅读