fileinput模块可以循环一个或多个文本文件的内容

时间:2021-02-12 22:29:43

fileinput模块可以循环一个或多个文本文件的内容。


【默认格式】

fileinput.input (files=None, inplace=False, backup='', bufsize=0, mode='r', openhook=None)


1
2
3
4
5
6
files:                  #文件的路径列表,默认是stdin方式,多文件[ '1.txt' , '2.txt' ,...]
inplace:                #是否将标准输出的结果写回文件,默认不取代
backup:                 #备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则                  会自动覆盖。
bufsize:                #缓冲区大小,默认为 0 ,如果文件很大,可以修改此参数,一般默认即可
mode:                   #读写模式,默认为只读
openhook:               #该钩子用于控制打开的所有文件,比如说编码方式等;
【常用函数】

1
2
3
4
5
6
7
fileinput.input()       #返回能够用于 for 循环遍历的对象
fileinput.filename()    #返回当前文件的名称
fileinput.lineno()      #返回当前已经读取的行的数量(或者序号)
fileinput.filelineno()  #返回当前读取的行的行号
fileinput.isfirstline() #检查当前行是否是文件的第一行
fileinput.isstdin()     #判断最后一行是否从stdin中读取
fileinput.close()       #关闭队列



fileinput中有一些方法:fileinput.isfirstline()取文本文件的第一行;fileinput.filename()返回文本文件的文件名;fileinput.lineno()返回文件的行数。

使用fileinput的方法:

使用实例
1. import fileinput
for eachline in fileinput.input("article.ids.txt"):
    print eachline
实现的方式其实跟readlines是一样的!
2. 打印输入的文件名称
import fileinput
for eachline in fileinput.input("article.ids.txt"):
    print fileinput.filename() #打印article.ids.txt
3. 打印当前行号与行的内容
import fileinput
for eachline in fileinput.input("article.ids.txt"):
print fileinput.lineno() ,eachline
其实这个跟读文件的操作是一样的。Enumerate好像是吧!而且能够读取行号值
4. 返回是否是第一行
import fileinput
for eachline in fileinput.input("article.ids.txt"):
if fileinput.isfirstline():print eachline;break