python基礎刻意練習-day10
檔案系統
我們所知道常用的作業系統有windows,mac os,linx,unix等,這些作業系統底層對於檔案系統的訪問工作原理是不一樣的,因此可能就要針對不同的系統來考慮使用哪些檔案系統模組。這樣是很麻煩的,因為這就意味著當程式的執行環境一改變,就要相應的去修改大量的**來應付。
而有了os模組,就不需要關心什麼作業系統下使用什麼模組,os模組會幫我們選擇正確的模組並呼叫。
os模組中關於檔案/目錄常用的函式使用方法
os.path模組中關於路徑常用的函式使用方法
操作檔案和目錄
要操作檔案、目錄,可以在命令列下面輸入作業系統提供的各種命令來完成。比如dir、cp等命令。
如果要在python程式中執行這些目錄和檔案的操作,作業系統提供的命令只是簡單地呼叫了作業系統提供的介面函式,python內建的os模組也可以直接呼叫作業系統提供的介面函式。
開啟python互動式命令列,下面是如何使用os模組的基本功能:
>>>import os
>>>os.name # 作業系統型別
>>>』posix』
如果是posix,說明系統是linux、unix或mac os x,如果是nt,就是windows系統。
要獲取詳細的系統資訊,可以呼叫uname()函式:
注意uname()函式在windows上不提供,也就是說,os模組的某些函式是跟作業系統相關的。
操作檔案和目錄的函式一部分放在os模組中,一部分放在os.path模組中,這一點要注意一下。檢視、建立和刪除目錄可以這麼呼叫:
把兩個路徑合成乙個時,不要直接拼字串,而要通過os.path.join()函式,這樣可以正確處理不同作業系統的路徑分隔符。在linux/unix/mac下,os.path.join()返回這樣的字串:
part-1/part-2
而windows下會返回這樣的字串:
part-1\part-2
同樣的道理,要拆分路徑時,也不要直接去拆字串,而要通過os.path.split()函式,這樣可以把乙個路徑拆分為兩部分,後一部分總是最後級別的目錄或檔名:
>>> os.path.split(』/users/michael/testdir/file.txt』)
(』/users/michael/testdir』, 『file.txt』)
os.path.splitext()可以直接讓你得到副檔名,很多時候非常方便:
>>>os.path.splitext(』/path/to/file.txt』)
(』/path/to/file』, 『.txt』)
這些合併、拆分路徑的函式並不要求目錄和檔案要真實存在,它們只對字串進行操作。檔案操作使用下面的函式。假定當前目錄下有乙個test.txt檔案:
但是複製檔案的函式在os模組中不存在,原因是複製檔案並非由作業系統提供的系統呼叫。理論上講,通過上一節的讀寫檔案可以完成檔案複製,只不過要多寫很多**。shutil模組提供了copyfile()的函式,還可以在shutil模組中找到很多實用函式,它們可以看做是os模組的補充。最後利用python的特性來過濾檔案。比如要列出當前目錄下的所有目錄,只需要一行**:
Python基礎刻意練習 Day17 模組
day1 變數 運算子與資料型別 day2 條件與迴圈 day3 4 列表與元組 day5 字串與序列 day6 7 函式與lambda表示式 day8 字典與集合 day9 10 檔案與檔案系統 day11 異常處理 day12 else 與 with 語句 day13 14 類與物件 day15...
刻意練習Python基礎 day 10 異常處理
錯誤型別 說明assertionerror 斷言語句失敗 attributeerror 物件沒有這個屬性 indexerror 序列中沒有此索引 index indentationerror 縮排錯誤 importerror 匯入模組 物件失敗 nameerror 未宣告 初始化物件 沒有屬性 os...
pyhon基礎刻意練習 day14
python基礎刻意練習 day14 資料成員 類變數或者例項變數用於處理類及其例項物件的相關的資料。方法重寫 如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋 override 也稱為方法的重寫。區域性變數 定義在方法中的變數,只作用於當前例項的類。例項變數 在類的宣...