**在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 是開啟的模式,可選的值為...