新聞中心
fileinput 模塊提供了如下函數(shù)可以把多個(gè)輸入流合并在一起:

fileinput.input(files=None, inplace=False, backup='', bufsize=0, mode='r', openhook=None):該函數(shù)中的 files 參數(shù)用于指定多個(gè)文件輸入流。該函數(shù)返回一個(gè) FileInput 對(duì)象。
當(dāng)程序使用上面函數(shù)創(chuàng)建了 FileInput 對(duì)象之后,即可通過(guò) for 循環(huán)來(lái)遍歷文件的每一行。此外,fileinput 還提供了如下全局函數(shù)來(lái)判斷正在讀取的文件信息:
fileinput.filename():返回正在讀取的文件的文件名。
fileinput.fileno():返回當(dāng)前文件的文件描述符(file descriptor),該文件描述符是一個(gè)整數(shù)。
文件描述符是一個(gè)文件的代號(hào),其值為一個(gè)整數(shù)。后續(xù)章節(jié)將會(huì)介紹關(guān)于文件描述符的操作。
fileinput.lineno():返回當(dāng)前讀取的行號(hào)。
fileinput.filelineno():返回當(dāng)前讀取的行在其文件中的行號(hào)。
fileinput.isfirstline():返回當(dāng)前讀取的行在其文件中是否為第一行。
fileinput.isstdin():返回最后一行是否從 sys.stdin 讀取。程序可以使用“-”代表從 sys.stdin 讀取。
fileinput.nextfile():關(guān)閉當(dāng)前文件,開(kāi)始讀取下一個(gè)文件。
fileinput.close():關(guān)閉 FileInput 對(duì)象。
通過(guò)上面的介紹不難發(fā)現(xiàn),fileinput 也存在一個(gè)缺陷,即在創(chuàng)建 FileInput 對(duì)象時(shí)不能指定字符集,因此它所讀取的文件的字符集必須與操作系統(tǒng)默認(rèn)的字符集保持一致。當(dāng)然,如果文本文件的內(nèi)容是純英文,則不存在字符集的問(wèn)題。
下面程序示范了使用 fileinput 模塊來(lái)讀取多個(gè)文件:
import fileinput
# 一次讀取多個(gè)文件
for line in fileinput.input(files=('info.txt', 'test.txt')):
# 輸出文件名,當(dāng)前行在當(dāng)前文件中的行號(hào)
print(fileinput.filename(), fileinput.filelineno(), line, end='')
# 關(guān)閉文件流
fileinput.close()上面程序使用 fileinput.input 直接合并了 info.txt 和 test.txt 兩個(gè)文件,這樣程序可以直接遍歷讀取這兩個(gè)文件的內(nèi)容。
文章標(biāo)題:創(chuàng)新互聯(lián)Python教程:Pythonfileinput模塊:逐行讀取多個(gè)文件
轉(zhuǎn)載源于:http://fisionsoft.com.cn/article/ccsidgs.html


咨詢(xún)
建站咨詢(xún)
