學習python,從入門到放棄(21)
阿新 • • 發佈:2022-03-30
學習python,從入門到放棄(21)
os 模組
os 模組提供的就是各種 Python 程式與作業系統進行互動的介面,要是跟作業系統打交道。
import os # 1.建立目錄(資料夾) os.mkdir(r'aaa') # 使用相對路徑 在當前執行檔案所在的路徑下建立一個aaa資料夾 os.mkdir(r'bbb/ccc') # mkdir只能建立單級目錄 os.makedirs(r'ccc') # makedirs可以建立單級目錄 os.makedirs(r'bbb/ccc/ddd') # makedirs支援建立多級目錄 import os # 2.刪除目錄(資料夾) os.rmdir(r'aaa') # 可以刪除單級目錄 os.rmdir(r'bbb') # 只能刪空的單級目錄 os.removedirs(r'ccc') # 可以刪除單級目錄 os.removedirs(r'C:\pythonProject02\aaa\bbb\ccc\ddd') # 刪除目錄之後如果外層的目錄也是空的則繼續刪除 # 3.檢視某個路徑下所有的檔名稱(檔案、資料夾) print(os.listdir()) print(os.listdir(r'/Users')) # 4.刪除檔案、重新命名檔案 os.remove(r'a.txt') os.rename(r'a.txt', r'aaa.txt') # 5.獲取當前路徑、切換路徑 print(os.getcwd()) os.chdir(r'C:\python') print(os.getcwd()) # 6.軟體開發目錄規範 啟動指令碼相容性操作 os.path.dirname(__file__) # 動態獲取當前執行檔案所在的絕對路徑 os.path.dirname(os.path.dirname(__file__)) # 每巢狀一層就是往上切換一層 print(os.path.abspath(__file__)) # 動態獲取當前執行檔案自身的路徑 # 7.判斷檔案是否存在 print(os.path.exists(r'bbb')) # True 判斷所給的路徑是否存在 print(os.path.exists(r'file.py')) # True 判斷所給的路徑是否存在 print(os.path.isdir(r'bbb')) # True 判斷路徑是否是一個資料夾 print(os.path.isdir(r'file.py')) # False 判斷路徑是否是一個資料夾 print(os.path.isfile(r'bbb')) # False 判斷路徑是否是一個檔案 print(os.path.isfile(r'file.py')) # True 判斷路徑是否是一個檔案 # 8.拼接路徑(極容易忽略) base_dir = 'bbb' exe_dir = 'file.py' '''拼接成py檔案的路徑''' print(base_dir + '/' + exe_dir) # 路徑分隔符在不同的系統下是不一樣的 使用加號的話相容性極差 res = os.path.join(base_dir, exe_dir) # 能夠自動識別當前作業系統的分隔符 print(res) # 9.獲取檔案大小(位元組 bytes) print(os.path.getsize(r'bbb')) # 0bytes print(os.path.getsize(r'a.txt')) # 55bytes
sys模組
該模組提供了一些介面,用於訪問 Python 直譯器自身使用和維護的變數,同時模組中還提供了一部分函式,可以與直譯器進行比較深度的互動,主要是跟python直譯器打交道。
import sys # 1.列舉當前執行檔案所在的sys.path print(sys.path) # 2.獲取直譯器版本資訊 print(sys.version) # 3.獲取平臺資訊 print(sys.platform) # 4.自定義命令列操作 print(sys.argv) try: username = sys.argv[1] password = sys.argv[2] except Exception: print('請輸入使用者名稱和密碼') else: if username == '666' and password == '123': print('可以正常執行該檔案') else: print('使用者名稱或密碼錯誤 沒有該檔案的執行許可權') ''' PS C:\pythonProject02\aaa> python 'file.py' 666 123 ['file.py', '666', '123'] 可以正常執行該檔案 PS C:\pythonProject02\aaa> python 'file.py' 666 124 ['file.py', '666', '124'] 使用者名稱或密碼錯誤 沒有該檔案的執行許可權 '''
json 模組
json 模組是 python 中的一個編碼和解碼 json 格式的輕量級模組,主要用於將 python 物件編碼為 json 格式輸出或儲存,以及將 json 格式物件解碼為 python 物件。
json 格式資料是不同變成語言之間資料互動的媒介。json 格式資料本質屬於字串型別。
import json d = {'username': '666', 'pwd': 123} print(d, type(d)) # {'username': '666', 'pwd': 123} <class 'dict'> res = json.dumps(d) print(res, type(res)) # {"username": "666", "pwd": 123} <class 'str'> print(str(d), type(str(d))) # {'username': '666', 'pwd': 123} <class 'str'>
雙引號是json格式資料獨有的標誌符號。
json.dumps() 用於序列化,將python資料型別轉換成json格式字串
json.loads() 用於反序列化,將json格式字串轉換成對應的資料型別
import json
d = {'username': '666', 'pwd': 123}
res = json.dumps(d)
print(res, type(res)) # json格式字串
encode_str = res.encode('utf8')
'''假設將該字串基於網路發給了另外一個python程式'''
# 先將bytes型別轉換成字串
json_str = encode_str.decode('utf8')
print(json_str, type(json_str))
res1 = json.loads(json_str)
print(res1, type(res1)) # {'username': '666', 'pwd': 123} <class 'dict'>
json.dump() 將其他資料型別直接寫入檔案(自動序列化)
json.load() 將檔案資料直接轉成對應的資料型別(自動反序列化)
不是所有的資料型別都支援序列化
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
subprocess 模組
subprocess 模組允許你生成新的程序,連線到它們的 input/output/error 管道,並獲取它們的返回(狀態)碼。這個模組的目的在於替換幾個舊的模組和方法。該模組可以實現遠端操作其他計算機的功能,動態獲取命令執行並返回結果。
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')) # 獲取錯誤命令執行之後的結果