os、json、sys、subprocess模組
阿新 • • 發佈:2022-03-30
os模組
import os 1.建立目錄(資料夾) os.mkdir(r'a') # 相對路徑 只能建立單級目錄 os.mkdirs(r'a\b') # 可以建立單級和多及目錄 2.刪除目錄 os.mkdir(r'a') # 只能刪除單級空目錄 os.removedirs() # 可以刪除單級目錄 os.removedirs() # 刪除目錄之後如果外層的目錄也是空的則繼續刪除 3.檢視某個路徑下所有的檔名稱(檔案、資料夾) os.listdir() 4.刪除檔案、重新命名檔案 os.remove(r'a.txt') os.rename(r'a.txt', r'aaa.txt') 5.獲取當前路徑、切換路徑 os.getcwd() os.chdir(r'\user\python') 6.軟體開發目錄規範 啟動指令碼相容性操作 os.path.dirname(__file__) # 動態獲取當前執行檔案所在的絕對路徑 D\day21 os.path.dirname(os.path.dirname(__file__)) # 每巢狀一層就是往上切換一層 D\ os.path.abspath(__file__) # 動態獲取當前執行檔案自身的路徑 D\day21\a.py 7.判斷檔案是否存在 os.path.exists(r'ATM') # True 判斷所給的路徑是否存在 os.path.exists(r'01 作業講解.py') # True 判斷所給的路徑是否存在 os.path.isdir(r'ATM') # True 判斷路徑是否是一個資料夾 os.path.isfile(r'01 作業講解.py') # True 判斷路徑是否是一個檔案 8.拼接路徑(極容易忽略) base_dir = 'ATM' exe_dir = '01 作業講解.py' res = os.path.join(base_dir, exe_dir) # 能夠自動識別當前作業系統的分隔符 9.獲取檔案大小(位元組 bytes) print(os.path.getsize(r'ATM')) # 128bytes print(os.path.getsize(r'a.txt')) # 14bytes
習題
# 選擇指定檔案並開啟瀏覽(目前只考慮文字檔案即可) # 展示某個檔案下所有的檔名稱 使用者選擇哪個就開啟哪個 import os # 1.先獲取目標檔案路徑(動態獲取 也可以省事先寫死) target_path = os.path.dirname(__file__) # 2.列舉該路徑下所有的檔名稱 full_path = os.path.join(target_path, '檔案集合') file_list = os.listdir(full_path) while True: # 3.迴圈展示每個檔名稱 for i, j in enumerate(file_list, start=1): print(i, j) # 4.獲取使用者選擇的編號 target_num = input('請輸入檢視檔案編號:').strip() # 5.判斷是否是純數字 if target_num.isdigit(): # 6.如果是純數字 轉換成整型 target_num = int(target_num) # 7.判斷數字在不在數量範圍內 if target_num in range(1, len(file_list)+1): # 8.獲取檔名稱 file_name = file_list[target_num-1] # 9.拼接完整路徑 full_file_path = os.path.join(full_path, file_name) # 10.檔案操作開啟檔案 with open(full_file_path, 'r', encoding='utf8') as f: print(f.read()) else: print('沒有編號的檔案') else: print('編號只能是數字')
sys模組
"""該模組主要是跟python直譯器打交道""" import sys # 1.列舉當前執行檔案所在的sys.path(掌握) # print(sys.path) # 2.獲取直譯器版本資訊(瞭解) # print(sys.version) # 3.獲取平臺資訊(瞭解) # print(sys.platform) # 4.自定義命令列操作 # print(sys.argv) """ cmd終端可以使用windows+r並輸入cmd喚起 也可以在pycharm直接使用快捷方式Terminal 模擬cmd並自動切換到當前執行檔案所在的路徑下 """ if len(sys.argv) == 3: # 這裡的判斷也可以變成異常捕獲的形式 username = sys.argv[1] password = sys.argv[2] if username == 'jason' and password == '123': print('可以正常執行該檔案') else: print('使用者名稱或密碼錯誤 沒有該檔案的執行許可權') else: print('請輸入使用者名稱和密碼 不能漏寫或多寫') try: username = sys.argv[1] password = sys.argv[2] except Exception: print('請輸入使用者名稱和密碼') else: if username == 'jason' and password == '123': print('可以正常執行該檔案') else: print('使用者名稱或密碼錯誤 沒有該檔案的執行許可權')
json模組
'''json是一個序列化模組 主要用於跨語言傳輸資料'''
1.參考群內截圖得知json格式資料是不同變成語言之間資料互動的媒介
2.json格式資料的具體特徵
結論1中有一個小細節>>>:資料基於網路傳輸肯定是二進位制格式
在python中bytes型別的資料可以直接看成是二級制資料
python中哪些資料可以轉成bytes型別(編碼encode())
只有字串可以!
由上述推論可知 json格式資料 本質應該屬於字串型別
# 雙引號是json格式資料獨有的標誌符號!!!
import json
d = {'name': 'bob', 'pwd': 111}
print(d, type(d))
res = json.dumps(d)
print(res, type(res))
具體操作
"""
json.dumps() 序列化
將python資料型別轉換成json格式字串
json.loads() 反序列化
將json格式字串轉換成對應的資料型別
"""
import json
d = {'name': 'bob', 'pwd': 111}
# 將上述字典寫入檔案
with open(r'a.txt','w',encoding='utf8') as f:
json.dump(d, f)
# 將檔案內容獲取出來
with open(r'a.txt','r',encoding='utf8') as f:
data = json.load(f)
print(data, type(data))
# 強調:不是所有的資料型別都支援序列化
"""
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
"""
pickle模組
# 基本不用
因為它不支援跨語言傳輸 只能識別python程式碼
'''直接忽略 不用掌握'''
subprocess模組
import subprocess
# dir在終端的意思就是檢視當前路徑下所有的檔名稱
res = subprocess.Popen('dir',
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
print('stdout', res.stdout.read().decode('utf8', 'ignore')) # 獲取正確命令執行之後的結果
print('stderr', res.stderr.read().decode('utf8')) # 獲取錯誤命令執行之後的結果
"""
該模組可以實現遠端操作其他計算機的功能
動態獲取命令執行並返回結果
eg:類似於Xshell軟體的功能
"""
"""
該模組可以實現遠端操作其他計算機的功能
動態獲取命令執行並返回結果
eg:類似於Xshell軟體的功能
"""