Python之檔案讀寫

2021-08-04 10:14:50 字數 3166 閱讀 2707

本文介紹python語言中的對於檔案的讀寫等操作。(本文使用python3)

首先是對檔案的操作流程為:

1.開啟檔案,得到檔案控制代碼並賦值給乙個變數

2.通過控制代碼對檔案進行操作

3.關閉檔案

對於檔案的操作就離不開open()函式(這個函式是python的io模組中的乙個內建函式)。

首先建議使用help(open)檢視下這個函式的基本資訊(很多),部分結果如下:

可以看到這個函式的作用是開啟乙個檔案並且返回乙個資料流。在執行失敗時會觸發ioerror。

基本用法如上所示,file是必須給出的,如果檔案在當前工作目錄,可以直接給出檔名即可;如果檔案不在當前工作目錄,還需要給出檔案的路徑。

開啟模式(mode):

「r」為預設模式:唯讀模式,不能進行寫等操作。

『w』:只寫模式,此時會進行「截斷」操作,如果檔案不存在則會建立,如果存在會覆蓋掉原檔案內容。

『x』:類似於『w』模式,不同的是在建立檔案的時候會檢查原檔案是否存在,如果存在會引發乙個fileexistserror錯誤。

『a』:追加模式,檔案不存在則建立,如果存在則在末尾追加內容。

『b』:二進位制模式,處理二進位制檔案。

『t』:檔案模式(預設)。

『+』:開啟乙個位於磁碟上的檔案,並且可以對這個檔案進行讀寫操作。

以上模式可以進行組合使用,例如『rb』即為讀二進位制檔案。

例如可以使用語句file1 = open(『data』)開啟檔案,這時候只是獲得了這個檔案的控制代碼,並沒有進行任何操作。

如果想列印檔案內容可以利用print

(file1.

read

())。

讀寫方法:f為檔案控制代碼(或賦給的那個變數名)

檔案的

f.read([size]) #size為讀取的長度,以byte為單位 。

f.readline([size]) #讀一行,如果定義了size,有可能返回的只是一行的一部分 。

f.readlines([size]) #把檔案每一行作為乙個list的乙個成員,並返回這個list。其實它的內部是通過迴圈呼叫readline()來實現的。

如果提供size引數,size是表示讀取內容的總長,也就是說可能唯讀到檔案的一部分。 

f.write(str) #把str寫到檔案中,write()並不會在str後加上乙個換行符 。

f.writelines(seq) #把seq的內容全部寫到檔案中。這個函式也只是忠實地寫入,不會在每行後面加上任何東西。 

f.close() #關閉檔案。如果乙個檔案在關閉後還對其進行操作會產生valueerror 。

f.flush() #把緩衝區的內容寫入硬碟 ,重新整理。

f.fileno() #返回乙個長整型的」檔案標籤「 。

f.isatty() #檔案是否是乙個終端裝置檔案(unix系統中的)。

f.tell() #返回檔案操作標記的當前位置,以檔案的開頭為原點 。返回值為距離原點的字元數。

f.next() #返回下一行,並將檔案操作標記位移到下一行。檔案是乙個可迭代物件。 

下面舉一些具體檔案操作的例子:

1. 是開啟乙個檔案並列印出來

# author:allen liu

# data: 07/27/2017

#11111開啟檔案並列印的三種方法。

file1 = open('data')#等價於 file1 = open('data','r'),獲得了檔案控制代碼

print(file1.read())#可以在括號中指定讀取的位元組數,用於將檔案內容放到乙個字串變數中。

file1.close()

#file2 = open('data','r')

for line in file2:

print(line.strip('\n'))

file2.close()

#file3 = open('data','r')

lines = file3.readlines()

for line in lines:

print(line.strip('\n'))

file3.close()

為什麼每次都要用open()重新獲得檔案控制代碼呢?因為對乙個檔案進行操作後,游標就不在原點了,這時候就不能得到游標前面的內容。

2. 向乙個已經存在的檔案中追加內容

hello world!

i'm comming!

file1 = open('data','a+')

file1.write('i will be back!')

print(file1.read())

#這裡是無法列印出檔案內容的,因為是追加,游標已經在文件的結束位置。

file1.close()

還有就是追加的內容追加在原文件的最後一行。如果想在下一行記得在追加內容前面加\n。

3. 建立乙個原來沒有的檔案,並寫入內容。

file1 = open('data1','x')

file1.write('i will be back!')

最好用『x』模式,因為直接用『w』的話,可能會覆蓋掉原有檔案的內容,用『x』則會先進行檢查。

4. 在原有檔案的指定位置寫入內容。

file1 = open('data','r+')

#file1.tell()檢視游標當前位置

file1.seek(10)#設定游標位置(以字元計算)

file1.write('i will be back!')

file1.close()

上邊的方法雖然可以在指定位置寫入內容,但是會覆蓋掉後面的內容。不推薦使用。

在不改變檔案內容的基礎上的新增,作者會在後續文章中介紹。

python之讀寫檔案

fr open readfile.txt r fw open writefile.txt w print fr.readline print fr.tell print fr.readlines fw.write write line fw.close fr.seek 0,0 第乙個引數代表位元組數...

python之檔案讀寫

python檔案讀寫 檔案讀取 data open baotuquan r encoding utf 8 read print data 輸出前10行,第九行修改 for line in f count 0if count 9 print fen count 1continue print line...

python之讀寫檔案

1.讀取檔案資料,檔案必須存在才可以讀且如要讀取的檔案不和當前.py在同乙個包下,需要特別指定此檔案路徑才行 f open test.txt encoding utf 8 填寫檔案路徑,開啟檔案 res f.read 讀取檔案 print res 顯示f.close 2.寫入後讀取 寫入資料 fw ...