fileinput模組可以對乙個或多個檔案中的內容進行迭代、遍歷等操作,我們常用的open函式是對乙個檔案進行讀寫操作。
fileinput模組的input()函式比open函式更高效和好用,體現在:
input()函式生成乙個迭代器,保證了在遇到大檔案的讀取時不會占用太大的記憶體。
用fileinput對檔案進行迴圈遍歷,格式化輸出,查詢、替換等操作,還能獲取每一行的行號等等,非常方便。
fileinput.input (files='filename', inplace=false, backup='', bufsize=0, mode='r', openhook=none)
files: #檔案的路徑列表,預設是stdin方式,多檔案['1.txt','2.txt',...]
inplace: #
是否將標準輸出的結果寫回檔案,預設不取代
backup: #
備份檔案的副檔名,只指定副檔名,如.bak。如果該檔案的備份檔案已存在,則會自動覆蓋。
bufsize: #
緩衝區大小,預設為0,如果檔案很大,可以修改此引數,一般預設即可
mode: #
讀寫模式,預設為唯讀
openhook: #
該鉤子用於控制開啟的所有檔案,比如說編碼方式等;
函式描述
input([files[, inplace[, backup]]])
幫助迭代多個輸入流中的行
filename()
返回當前檔案的名稱
lineno()
返回(累計的)當前行號
filelineno()
返回在當前檔案中的行號
isfirstline()
檢查當前行是否是檔案中的第一行
isstdin()
檢查最後一行是否來自sys.stdin
nextfile()
關閉當前檔案並移到下乙個檔案
close()
關閉序列
fileinput.input是最重要的函式,它返回乙個迭代器物件,如果要處理多個檔案,可以向這個函式提供乙個或多個檔名。
還可將引數inplace設定為true(inplace=true),對於你訪問的每一行,都需列印出替代內容,這些內容將被寫回到當前輸入檔案中,此時可選引數backup用於給從原始檔案建立的備份檔案指定副檔名。
1、讀取多個檔案
#a.txt檔案的內容
"""我是好
人"""
#b.txt檔案的內容
"""他是壞
人"""
#讀取乙個檔案
for line in fileinput.input("
a.txt"):
(line)
#讀取多個檔案
for line in fileinput.input(["
a.txt
", "
b.txt
"]):
print(line)
2、修改檔案並備份原檔案
#-*_ coding:utf-8 -*-
import
fileinput
for line in fileinput.input("
a.txt
", backup="
.bak
", inplace=true):
line = line.replace("
我", "小明"
)
(line)#結果
當前資料夾會生成a.txt.bak檔案,內容是之前的內容,
而a.txt檔案已經被修改了,把"我
"變成了"
小明"
3、輸出當前行號和行內容
#-*_ coding:utf-8 -*-
import
fileinput
for line in fileinput.input("
a.txt"):
lineno =fileinput.filelineno()
lineno, line#結果
1我2是
3好、4 人
4、輸出檔名
#-*_ coding:utf-8 -*-
import
fileinput
for line in fileinput.input("
a.txt"):
#在第一行前面先輸出檔名
iffileinput.isfirstline():
fileinput.filename()
line#結果
a.txt我是
好、人
其他函式,都是類似的使用方法,這裡就不全部介紹了。
Python之檔案處理
python檔案處理 簡單理解就是對檔案互動的處理過程,主要包含rw過程。當前目錄下建立檔案 f file aa.txt w 第乙個檔名,乙個是開啟f模式,模式主要有rwa r模式 直接讀取已經必須要存在的檔案,不存在話 報錯ioerror w模式 會直接建立乙個新的檔案,若存在直接覆蓋舊檔案 a追...
Python菜鳥 File 檔案 方法
file 物件使用 open 函式來建立,下表列出了 file 物件常用的函式 序號方法及描述 1file.close 關閉檔案。關閉後檔案不能再進行讀寫操作。2file.flush 重新整理檔案內部緩衝,直接把內部緩衝區的資料立刻寫入檔案,而不是被動的等待輸出緩衝區寫入。3file.fileno ...
Python的file檔案方法
python的檔案物件涉及的方法彙總 要呼叫下列方法需先建立file物件 file.close 關閉檔案,這個就不用多說了,對檔案操作完之後都會呼叫 file.flush 重新整理檔案內部緩衝,立即寫入檔案。平常是等待close的時候在寫入 file.fileno 返回乙個整型的檔案描述符,就是系統...