學習內容
- Python檔案讀寫
檔案路徑
-
指定檔案路徑
路徑分為絕對路徑與相對路徑,絕對路徑從根目錄開始,而相對路徑是相對於程式的工作目錄,cwd即“當前工作目錄”。
os.getcwd()
可取得當前工作目錄路徑,路徑的資料型別為str,路徑中資料夾之間的分割符為一個
\
,但路徑作為字串,其中的\
需要再加一個\
進行轉義,故輸入\\
作為分隔符。os.chdir()
接受一個路徑(字串),將cwd改為此路徑,若路徑不存在,則丟擲FileNotFoundError
-
相對路徑表示
.\ cwd
..\ cwd 的父資料夾
os模組
os.makedirs()
建立資料夾
os.listdir()
獲取引數路徑下檔案列表,返回型別為list
os.path模組包含與檔名和檔案路徑相關的函式
os.path.abspath()
返回引數的絕對路徑。
os.path.isabs()
判斷是否為絕對路徑,返回布林值。
os.path.relpath(path, start)
返回start(預設為cwd)到path的相對路徑(字串)。
os.path.basename()
獲取路徑中最後一個\
後的內容(字串),dirname()
則返回\
前的內容。
os.path.split()
相當於使用了basename()
和dirname()
,返回一個含有兩個元素的tuple。
因為路徑為str型別,故可使用字串的split()
方法分割出每一層資料夾的名稱,系統中路徑的分隔符存於os.path.sep
變數。
檢查路徑
os.path.exists()
是否存在。
os.path.isdir()
是否為路徑。
os.path.isfile()
是否為檔案。
若路徑本身不存在,則都返回False。
os.path.getsize()
獲取檔案位元組數。
# 遍歷目錄下檔案,統計所有檔案的總位元組數
path = 'C:\\Game\\Python'
size = 0
for fileName in os.listdir(path):
size = size + os.path.getsize(os.path.join(path,fileName))
# size = size + os.path.getsize(path + os.sep + fileName) 等同於上一行
print(size)
複製程式碼
os.path.join()
連線兩端路徑,並在之間新增分割符。
檔案讀寫與shelve模組
`open()`接受一個路徑,返回一個**File**物件
第二引數
‘w’寫模式 在close前write()方法寫入的內容將全部覆蓋原檔案內容
Write方法返回一個數字,即寫入內容的位元組數
‘wb’ 寫二進位制模式 可用於寫入Web頁面內容,二進位制寫入模式下可儲存文字中的“Unicode編碼”
‘a’新增模式 則將寫入內容新增到原內容後
複製程式碼
File物件方法 read()返回檔案的內容(str) readlines() 逐行讀取,返回一個字串list writable() 是否可寫 readable() 可讀
shelve模組檔案讀寫
>>> shelveFile = shelve.open('myData')
animalList = ['dog','cat','bird','fish']
shelveFile['animal'] = animalList
fruitsList = ['apple','banana','pineapple','watermelon']
shelveFile['fruits'] = fruitsList
shelveFile.close()
>>> a = shelve.open('myData')
>>> a['animal']
['dog', 'cat', 'bird', 'fish']
>>> list(a)
['animal', 'fruits']
>>> list(a.keys())
['animal', 'fruits']
>>> list(a.values())
[['dog', 'cat', 'bird', 'fish'],
['apple', 'banana', 'pineapple', 'watermelon']]
複製程式碼
pprint.pformat()
能將傳入的列表或字典內容轉化成文字字串,通過將字串寫入.py檔案中,使得該檔案成為可import的模組。
webbrowser.open()
啟動瀏覽器訪問引數列表中的url。