1. 程式人生 > 其它 >內建模組2

內建模組2

內容概要

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

random模組

import random
print(random.random())  # 0-1之間的小數
import random
print(random.randint(1, 9))  # 隨機產生1-9之間的整數
import random
print(random.uniform(1, 9))  # 隨機產生1-9之間的小數
import random
print(random.choice([1, 2, 3]))  # 隨機抽取一個
import random
print(random.sample(['春', '夏', '秋', '冬'], 3))  # 隨機抽取指定樣本
import random
l = [1, 2, 3, 4, 5, 6]
random.shuffle(l) # 隨機打亂列表中的元素
print(l)
筆試題,隨機產生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='')

os模組

import os
os.mkdir(r'書籍')  # 建立單級目錄
import os
os.makedirs(r'圖集1/影集1')  # 建立多級目錄
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())  # 利用檔案操作讀寫檔案
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)  # 獲取當前執行檔案的絕對路徑
import sys
try:
    username = sys.argv[1]
    password = sys.argv[2]
    if username == 'sss' and password == '111':
        print('檔案正常執行')
    else:
        print('使用者名稱或密碼錯誤')
except Exception:
    print('請輸入使用者名稱和密碼')
    print('體驗(遊客模式)')

序列化模組

json格式資料:跨語言傳輸
import json
dic = {'name': 'sss', 'age': 18, 'hobby': 'music'}
res = json.dumps(dic)  # 將python其他資料專程json格式字串
print(res)
print(json.loads(res))  # 反序列化,將json格式字串轉成當前語言的某個資料型別
import json
a = b'{"name": "sss", "age": 18, "hobby": "music"}'  # 二進位制
z = a.decode('utf8')  # 將二進位制轉成json格式字串
c = json.loads(z)  # 然後轉成字典
print(c, type(c))
把字典寫入檔案在取出
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))
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))
dic = {'name': 'sss', 'age': 18, 'hobby': '音樂'}
print(json.dumps(dic, ensure_ascii=False))


並不是所有資料型別都支援序列化
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'))


windows電腦內部編碼預設是GBK