Python fileinput模块:逐行读取多个文件

fileinput 该模块提供了将多个输入流合并在一起的以下函数:
fileinput.input(files=None, inplace=False, backup='', bufsize=0, mode='r', openhook=None):该函数中的 files 用于指定多个文件输入流的参数。该函数返回到一个 FileInput 对象。
当程序使用上述函数创建时 FileInput 对象之后,可以通过 for 循环遍历文件的每一行。此外,fileinput 判断正在读取的文件信息还提供了以下全局函数:
fileinput.filename():返回正在阅读的文件的文件名称。
fileinput.fileno():返回当前文件的文件描述符(file descriptor),文件描述符是一个整数。
文件描述符是文件的代码,其值为整数。后续章节将介绍文件描述符的操作。
fileinput.lineno():返回当前读取的行号。
fileinput.filelineno():在其文件中返回当前读取的行号。
fileinput.isfirstline():返回当前读取的行是否是其文件中的第一行。
fileinput.isstdin():是否回到最后一行 sys.stdin 读取程序可以使用“-”代表从 sys.stdin 读取。
fileinput.nextfile():关闭当前文件,开始读取下一个文件。
fileinput.close():关闭 FileInput 对象。
通过以上介绍不难发现,fileinput 还有一个缺陷,就是在创建中 FileInput 对象不能指定字符集,因此其读取的文件的字符集必须与操作系统默认的字符集一致。当然,如果文本文件的内容是纯英语的,就没有字符集的问题。
下面的程序示范了使用 fileinput 模块可以读取多个文件:
importfileinput
#一次读取多个文件
forlineinfileinput.input(files=('info.txt','test.txt')):
#输出文件名,当前行在当前文件中
print(fileinput.filename(),fileinput.filelineno(),line,end='')
#关闭文件流
fileinput.close()使用上述程序 fileinput.input 直接合并了 info.txt 和 test.txt 两个文件,这样程序就可以直接读取两个文件的内容。
