模組(二)
阿新 • • 發佈:2022-03-31
os模組
import os # 建立資料夾 os.mkdir(r'aaa') # 建立單層目錄 檔案已存在時無法繼續建立 os.makedirs(r'bbb/ccc/ddd') # 建立多級目錄 # 刪除目錄 os.rmdir(r'aaa') # 刪除單級的空目錄 os.removedirs(r'bbb/ccc/ddd') # 刪除單級目錄,如果外層是空的則繼續刪除 # 檢視檔案路徑下的所有檔名稱 print(os.listdir(r'E:\pythonProject2\day022')) print(os.listdir(r'C:\Users\Administrator\Desktop')) # 刪除檔案、重新命名檔案 os.removedirs(r'aaa') os.rename(r'aaa', r'aaaaa') # 獲取檔案路徑,切換檔案路徑 print(os.getcwd()) # 獲取執行檔案所在的路徑 os.chdir(r'bbb/ccc/ddd') # 改寫檔案所在路徑 print(os.getcwd()) # 軟體開發目錄規範,啟動指令碼相容性 os.path.dirname(__file__) # 動態的獲取當前檔案所在的路徑 os.path.dirname(os.path.dirname(__file__)) # 巢狀一層就是往上一級路徑走一次 print(os.path.dirname(__file__)) # E:/pythonProject2/day022 print(os.path.dirname(os.path.dirname(__file__))) # E:/pythonProject2 # 判斷檔案、資料夾是否存在 print(os.path.exists(r'aaaaa')) # 判斷所給路徑是否存在 print(os.path.exists(r'E:\pythonProject2\day022\bbb\ccc')) print(os.path.exists(r'E:\pythonProject2\day022\bbb\ddd')) print(os.path.isdir(r'aaaaa')) # 判斷路徑是否是資料夾 print(os.path.isdir(r'01.作業講解.py')) # 判斷路徑是否是資料夾 print(os.path.isfile(r'aaa')) print(os.path.isfile(r'01.作業講解.py')) # 判斷路徑是否是檔案 # 檔案路徑拼接 res ='aaaaa'+'/'+'bbb' # 加號相容性較差 print(res) res = os.path.join('aaaaa', 'bbb') # 使用join拼接路徑會直接識別系統所需的分隔符 print(res) # 檔案大小 print(os.path.getsize(r'01.作業講解.py')) # 結果為位元組數
sys模組
import sys print(sys.path) # 獲取檔案所在的sys.path print(sys.version) # 獲取直譯器版本 print(sys.platform) # 獲取平臺資訊 print(sys.argv) # 自定義命令 ''' if len(sys.argv) == 3: username = sys.argv(1) password = sys.argv(2) if username == 'oliver'and password == '123': print('yes') else: print('no') else: print('輸入使用者名稱,不能多寫或漏寫') '''
json模組(序列化)
import json dic = {'name1': 'oliver', 'name2': 'kevin', 'name3': 'jerry'} print(dic, '\n', type(dic)) res = json.dumps(dic) # 將字典轉換成json格式 print(res, '\n', type(res)) # {"name1": "oliver", "name2": "kevin", "name3": "jerry"} <class 'str'> ''' json格式資料是字串型別,並且雙引號是字串的標誌符號 ''' print(str(dic), '\n', type(str(dic))) # {'name1': 'oliver', 'name2': 'kevin', 'name3': 'jerry'} <class 'str'> dic = {"name1": "oliver", "name2": "kevin"} print(dic, type(dic)) dic = '{"name1": "oliver", "name2": "kevin"}' print(dic, type(dic)) # 算是json格式 dic = {'name1': 'kevin', 'name2': 'kevin'} res = json.dumps(dic) # 將dic轉換為(序列化)json格式 str1 = res.encode('utf8') # 對res進行utf8編碼 print(str1) json_str = str1.decode('utf8') # 解碼之後的格式首先是json格式資料 print(json_str, type(json_str)) res1 = json.loads(json_str) # 然後將資料從json格式轉換為(反序列化)原格式 print(res1, type(res1)) ''' 序列化:將python資料型別轉換為json格式 反序列化:將json格式資料轉換為對應資料型別 json模組配合檔案使用時 json.dump() # 自動將資料轉為json格式,然後寫入檔案(自動序列化) json.load() # 將檔案裡的資料直接轉為其他資料取出(自動反序列化) '''
支援序列化的資料型別
python資料型別 | json對應型別 |
---|---|
dict | object |
list | array |
tuple | array |
str | string |
int | number |
float | number |
True | true |
False | false |
None | null |
subprocess模組
import subprocess
res = subprocess.Popen('ls',
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
print('stdout', res.stdout.read().decode('utf8'))
print('stderr', res.stderr.read().decode('utf8'))