Python檔案操作方法大總結

Alin2477305449發表於2023-03-31

檔案操作必不可少的是open函式:對檔案讀寫之前,需要先開啟檔案,獲取檔案控制程式碼

注意:open() file() 儘量使用open(),Python3以後不支援file()了

1、open方法原型解釋

1
open (file_name[,access_mode][,buffering])

(1)引數說明

file_name:一個包含了你要訪問的檔案路徑及檔名稱的字串值。儘量使用絕對路徑

access_mode:開啟檔案的方式:這個引數是非強制的,預設檔案訪問模式為只讀(r)

r,只讀

w:寫之前會清空檔案的內容

a:追加的方式,在原本內容中繼續寫

buffering:先寫到快取中

如果buffering的值被設定為0,就不會有寄存;如果值為1,訪問檔案時會快取行;如果值位大於1的整數,表明了這就是寄存區的緩衝大小;如果取負值,寄存區的緩衝大小則為系統預設。該引數也是非強制性的。

(2)返回值

該語句表示返回的File_object是一個指向檔案的指標(一個檔案物件)檔案控制程式碼。當以只讀模式(r)開啟一個不存在的檔案時,就會報IOError異常(檔案不存在),但如果是以寫或追加模式(w/a/a+)開啟一個不存在的檔案時,預設會建立該檔案,但如果是所在路徑中有目錄不存在,也會報IOError異常

 常用方法列表

操作 說明
os.getcwd() 得到當前工作目錄,即當前Python指令碼工作的目錄路徑
os.listdir() 返回指定目錄下的所有檔案和目錄名
os.remove() 函式用來刪除一個檔案
os.removedirs(r"c\python") 刪除多個目錄
os.path.isfile() 檢驗給出的路徑是否是一個檔案
os.path.isdir() 檢驗給出的路徑是否是一個目錄
os.path.isabs() 判斷是否是絕對路徑
os.path.exists() 檢驗給出的路徑是否真地存
os.path.split() 返回一個路徑的目錄名和檔名
os.path.splitext() 分離副檔名
os.path.dirname() 獲取路徑名
os.path.basename() 獲取檔名
os.system() 執行shell命令
os.getenv() 與os.putenv() 讀取和設定環境變數
os.linesep  給出當前平臺使用的行終止符,Windows使用'rn',Linux使用'n'而Mac使用'r'
os.name 指示你正在使用的平臺,對於Windows,它是'nt',而對於Linux/Unix使用者,它是'posix'
os.rename(old, new) 重新命名:
os.makedirs(r"c:\python\test") 建立多級目錄
os.mkdir("test") 建立單個目錄
os.stat(file) 獲取檔案屬性
os.chmod(file) 修改檔案許可權與時間戳
os.exit() 終止當前程式
os.path.getsize(filename) 獲取檔案大小
os.mkdir("file") 建立目錄
shutil.copyfile("oldfile","newfile") 複製檔案, oldfile和newfile都只能是檔案
shutil.copy("oldfile","newfile") oldfile只能是資料夾,newfile可以是檔案,也可以是目標目錄
shutil.copytree("olddir","newdir") 複製資料夾, olddir和newdir都只能是目錄,且newdir必須不存在
os.rename("oldname","newname") 重新命名檔案(目錄),檔案或目錄都是使用這條命令
shutil.move("oldpos","newpos") 移動檔案(目錄)
os.remove("file") 刪除檔案
os.rmdir("dir") 刪除目錄, 只能刪除空目錄
shutil.rmtree("dir") 空目錄、有內容的目錄都可以刪
os.chdir("path") 轉換目錄, 換路徑
os.mknod("test.txt") 建立空檔案

2、mode檔案操作模式

r,w,a

r+可讀可寫

w+:開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

a+:開啟一個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。

模式列表


操作 說明
r 以只讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。
w 以寫方式開啟,
a 以追加模式開啟 (從 EOF 開始, 必要時建立新檔案)
r+ 以讀寫模式開啟
w+ 以讀寫模式開啟 (參見 w )
a+ 以讀寫模式開啟 (參見 a )
rb 以二進位制讀模式開啟
wb 以二進位制寫模式開啟 (參見 w )
ab 以二進位制追加模式開啟 (參見 a )
rb+ 以二進位制讀寫模式開啟 (參見 r+ )
wb+ 以二進位制讀寫模式開啟 (參見 w+ )
ab+ 以二進位制讀寫模式開啟 (參見 a+ )


3、透過open獲取到的檔案控制程式碼可以對檔案作的其他操作

(1)fp.closed

判斷檔案是否已經關閉。返回true如果檔案已被關閉,否則返回false

(2)fp.mode

輸出讀寫模式。返回被開啟檔案的訪問模式。

(3)fp.name:

返回檔案的名稱。

(4) fp.softspace

如果用print輸出後,是否跟一個空格符,false不列印,true則列印。

(5)fp.close()

重新整理緩衝區裡任何還沒寫入的資訊,並關閉該檔案,這之後便不能再進行寫入。

(6)flush()

把緩衝區中的內容持久化寫到磁碟裡

快取區寫滿的情況,系統會自動呼叫flush()方法。

呼叫flush的時機:寫入了多少長度的資料,或者間隔了多長的時間

如果沒有flush(),持久化內容丟失

(7)next()

1
2
for  in  fp:
     print  i

把一個file用for...in file這樣的迴圈遍歷語句時,就是呼叫next()函式來實現。

1
2
3
4
5
fp = open (fileName, 'r' )
print  fp. next ()
print  fp. next ()
print  fp.fileno()  #判斷當前操作的檔案控制程式碼是哪一個number
fp.close()


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952502/viewspace-2942930/,如需轉載,請註明出處,否則將追究法律責任。

相關文章