python檔案讀寫和整理

2021-07-23 21:58:09 字數 3924 閱讀 8384

**在windows上面,路徑的書寫使用反斜槓作為資料夾之間的分隔符;在os x或者linux上則是是用正斜槓。

python上對檔案進行操作要使用到os這個模組。

1.os模組和os.path模組的相關方法。

使用os.path.join()函式,通過給它傳遞各資料夾的名字,會返回乙個檔案路徑的字串,並根據使用的不同平台包含正確的路徑分隔符。

import os 

os.path.join('c:','hello','123')

利用os.getcwd()函式可以得到當前路徑。並可以利用os.chdir()來改變它

os.getcwd()

os.chdir('e:\\hello')

利用可以建立新的資料夾。

os.makedirs('hi')
os.path和os常用函式:

os.path.abspath(path)將返回引數的絕對路徑的字串,這是將相對路徑轉化為絕對路徑的最佳方法。

os.path.isabs(path)用於判斷是否絕對路徑,是就返回true

os.path.relpath(path,start)將返回從start到path的相對路徑的字串。如果沒有提供start則以當前目錄作為start

os.path.dirname(path)將返回乙個字串包含path引數中最後乙個斜槓之前的所有內容。

os.path.basename(path)將返回乙個字串包含path引數中最後乙個斜槓之後的內容。

os.path.split(path)將返回乙個路徑的目錄名稱和基本名稱。若需得到路徑中每個資料夾的字串列表,則要使用split方法(不是os.path中的split),並將os.path.sep作為引數

os.path.getsize(path)將返回path引數中檔案的位元組數。

os.listdir(path)將返回檔名字串的列表,包含path引數中的每個檔案。

os.path.exists(path)若path所指的檔案或資料夾存在,則返回true

os.path.isfile(path)若path所指的是乙個檔案且存在,則返回true。

os.path.isdir(path)若path所指的是乙個資料夾且存在,則返回true。

2.檔案讀寫過程。

3個步驟:

(1)呼叫open()函式,返回乙個file物件。

(2)呼叫file物件的read()或write()方法。

(3)呼叫file物件的close()方法。

檔案讀取:

如果希望將整個檔案的內容讀取為乙個字串值,就使用file物件的read()方法。或者使用readlines()方法,從該檔案獲得乙個字串的列表,每個字串就是文字中的每一行。

檔案寫入:

寫入檔案時,需要用'w'(寫入模式)或者'a'(新增模式)開啟檔案,獲得乙個file物件。

3.用shelve模組儲存變數。

利用shelve模組,可以將python程式中的變數儲存到二進位制的shelf檔案中。這樣程式就可以從硬碟恢復變數的資料。

eg.

import shelve

shelffile = shelve.open('mydata')

team=['arsenal','liverpool','bacelona']

shelffile['team']=team

shelffile.close()

執行程式之後,會出現三個新檔案:mydata.bak,mydata.dir,mydata.dat

稍後可以使用shelve模組重新開啟這些檔案並取出資料。shelf值不必用讀模式或者寫模式開啟,因為它們開啟之後既能讀又能寫。

eg.

import shelve

shelffile=shelve.open('mydata')

shelffile['team'] --->['arsenal','liverpool','bacelona']

shelffile.close()

如同字典一樣,shelf值也有keys()和values()方法,返回shelf中鍵和值的類似列表的值。因為這些方法返回類似列表的值,而不是真正的列表,所以應該將他們傳遞給list()函式,去的列表的形式。

4.幾個常用的其他函式:

random.shuffle():該函式會重新隨機排列傳遞給他的列表中的值。

random.sample():該函式可以從乙個列表中隨機選出若干個你所需要的值。第乙個引數是你希望選擇的列表,第二個引數是你希望選擇的值的個數。

5.檔案整理:使用shutil模組

shutil模組中包含一些可以幫助複製,移動,改名和刪除檔案的函式。

(1)複製檔案和資料夾:

呼叫shutil.copy(source,destination),將source處的檔案複製到路徑destination處的資料夾。如果destination是乙個檔名,它將作為被複製檔案的新名字。該函式返回乙個字串表示被複製檔案的路徑。

shutil.copytree()將複製整個資料夾,以及它包含的資料夾和檔案。

(2)檔案和資料夾的移動和改名:

呼叫shutil.move(source,destination),將路徑source處的資料夾移動到路徑destination,並返回新位置的絕對路徑的字串。

destination也可以指定乙個檔名,此時檔案移動時被改名。

(3)檔案和資料夾的刪除。

用os.unlink(path)可以刪除path處的檔案。

用os.rmdir(path)將刪除path處的資料夾。該資料夾必須為空,其中沒有任何檔案或資料夾。

用shutil.retree(path)將刪除path處的資料夾,它包含的所有檔案和資料夾都會被刪除。

(4)使用send2trash模組安全刪除:

使用第三方的send2trash模組會將資料夾和檔案傳送到**站,而不是永久刪除它們。這樣如果不小心誤操作,也可以從**站中恢復。

(5)使用os.walk()遍歷目錄:

當需要遍歷目錄樹時候,可以使用os模組的walk()函式。該函式被傳入乙個資料夾路徑在迴圈的每次迭代中,返回三個值:

*當前資料夾名稱的字串。

*當前資料夾中子資料夾的字串列表。

*當前資料夾中檔案的字串列表。

當資料夾中還存在有子目錄,就會一直迭代下去。當然,工作目錄並不會隨著walk函式的迭代而改變。

6.zip檔案處理:

(1)讀取zip檔案

要讀取zip檔案的內容,首先要建立乙個類似於file物件的zipfile物件。zipfile物件有乙個namelist()方法,會返回zip檔案中包含的所有檔案和資料夾的字串列表。這些字串可以傳遞給zipfile物件的getinfo()方法,返回乙個關於特定檔案的zipinfo物件。裡面有很多屬性。例如演示的file_size和compress_size屬性

(2)解壓縮:

使用zipfile物件的extractall()方法解壓所有檔案和資料夾,放在當前目錄。也可以給該方法傳遞乙個資料夾名稱,將檔案和資料夾解壓縮到該資料夾內。

zipfile物件的extract()方法可以解壓單個檔案。傳遞給該方法的檔案必須匹配namelist()返回的字串列表中的乙個,也可以向extract()傳遞第二個引數,作為destination。

(3)新增壓縮檔案和建立zip檔案:

要建立zip檔案,要以'w'模式開啟zipfile物件。向write()方法傳入乙個路徑,程式就會壓縮該路徑所指的檔案,新增到新的zip中。

write()方法的第乙個引數是乙個字串,代表要新增的檔名。第二個引數是「壓縮型別」,告訴計算機是用什麼演算法壓縮檔案。

若以'a'模式開啟zipfile物件,則可以將檔案新增到原有的zip檔案中。

python檔案和變數讀寫

對檔案操作首先需要找的檔案的路徑,os.path模組可以很好地對路徑進行操作問題。結構資料 變數讀寫 讀寫檔案有3個步驟 呼叫open 函式開啟檔案,返回file物件 呼叫file物件的read 或write 方法讀或寫檔案 呼叫file物件的close 方法,關閉檔案。向open 函式傳入乙個路徑...

python檔案讀寫和異常

1,文字檔案 2,二進位制檔案 print type data with open 吉多.jpg wb as fs2 fs2.write data except filenotfounderror as e print 指定的檔案無法開啟.except ioerror as e print 讀寫檔案...

Python檔案讀寫

今天在看python檔案讀寫操作,發現python file name mode buffering file 函式用於建立乙個file物件,它有乙個別名叫open 可能更形象一些,它們是內建函式。來看看它的引數。它引數都是以字串的形式傳遞的。name是檔案的名字。mode 是開啟的模式,可選的值為...