小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python模塊·Pickle讀寫文件(不同類型)

 NeighborMrSun 2023-02-21 發(fā)布于湖南

一、Pickle簡介:

  • 把數(shù)據(jù)寫入文件時(shí),常規(guī)的文件方法只能把字符串對(duì)象寫入。其他數(shù)據(jù)需先轉(zhuǎn)換成字符串再寫入文件
  • Pickle可以將其他類型的數(shù)據(jù)寫入文件,之后又可以把它完整無缺地取出來

補(bǔ)充:

  • 常規(guī)方法寫入數(shù)據(jù),只能是字符串類型,其他類型無法寫入,例如:int,字典,列表等類型;pickle模塊可以在文件中存儲(chǔ)任何類型的數(shù)據(jù),也可以完整取出任何類型的數(shù)據(jù);

二、Pickle模塊常用函數(shù):

分類 關(guān)鍵字 / 函數(shù) / 方法 說明
模塊 import pickle 導(dǎo)入模塊
pickle.dump(dict,fw) 將Python數(shù)據(jù)類型轉(zhuǎn)換為2進(jìn)制并保存到 pickle 格式的文件內(nèi)
dict:寫入的文件地址
fw:寫文件對(duì)象
pickle.load(dict) 從pickle格式的文件中讀取數(shù)據(jù)并轉(zhuǎn)換為python的數(shù)據(jù)類型
dict:寫入的文件地址

三、使用示例

import pickle # 將其他類型的數(shù)據(jù)寫入文件 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)

四、練習(xí):創(chuàng)建系統(tǒng)用戶

需求:

  • 編寫一個(gè)程序(函數(shù)),實(shí)現(xiàn)創(chuàng)建用戶的功能
  • 提示用戶輸入 用戶名
  • 隨機(jī)生成 8位密碼 (導(dǎo)入之前的模塊文件)
  • 創(chuàng)建用戶并設(shè)置密碼
  • 將用戶相關(guān)信息存儲(chǔ)文件內(nèi),并打印
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}已存在,請(qǐng)重新輸入!')
    else:
        # 隨機(jī)生成8位密碼
        password = rp.get_pass()
        print(f'您的用戶名:{username},您的密碼:{password}')
        # 創(chuàng)建用戶
        subprocess.run(f'useradd {username}', shell=True)
        # 設(shè)置密碼
        subprocess.run(f'echo {password} | passwd --stdin {username}', shell=True)

        # 將用戶相關(guān)信息存儲(chǔ)文件
        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')
  • randpass生成隨機(jī)密碼類
import random as rd from string import digits as dg, ascii_letters as al # 隨機(jī)生成密碼 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())

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多