这篇文章主要介绍python如何使用fileinput读取文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
fileinput是python的内置模块,但我相信,不少人对它都是陌生的。今天我把fileinput的所有的用法、功能进行详细的讲解,并列举了一些非常实用的案例,对于理解和使用它可以说完全没有问题。
1。从标准输入中读取
当你的Python脚本没有传入任何参数时,fileinput默认会以stdin作为输入源
#, demo.py import fileinput for line  fileinput.input拷贝(): ,,,print(线)
效果如下,不管你输入什么,程序会自动读取并再打印一次,像个复读机似的。
,美元python demo.py 你好 你好 python python
2。单独打开一个文件
单独打开一个文件,只需要在文件中输入一个文件名即可
import fileinput with fileinput.input(文件=(& # 39;a.txt& # 39;,)), as 文件: ,,,for line 拷贝文件: ,,,,,,,印刷(f # 39; {fileinput.filename()},第{fileinput.lineno()}行:,{线}& # 39;,,结束=& # 39;& # 39;)
其中一个。txt的内容如下
你好 世界
执行后就会输出如下
,美元python demo.py a.txt 第1行:你好 a.txt 第2行:,世界
需要说明的一点是,fileinput.input()默认使用模式=& # 39;" # 39;的模式读取文件,如果你的文件是二进制的,可以使用模式=& # 39;rb # 39;模式.fileinput有且仅有这两种读取模式。
3。批量打开多个文件
从上面的例子也可以看的到,我在fileinput。输入函数中传入了文件参数,它接收一个包含多个文件名的列表或元组,传入一个就是读取一个文件,传入多件就是读取多个文件。
import fileinput with fileinput.input(文件=(& # 39;a.txt& # 39;,, & # 39; b.txt& # 39;)), as 文件: ,,,for line 拷贝文件: ,,,,,,,印刷(f # 39; {fileinput.filename()},第{fileinput.lineno()}行:,{线}& # 39;,,结束=& # 39;& # 39;)
。txt和b。txt的内容分别是
,美元cat a.txt 你好 世界 美元,cat b.txt 你好 python
运行后输出结果如下,由于。txt和b。txt的内容被整合成一个文件对象文件,因此fileinput.lineno()只有在读取一个文件时,才是原文件中真实的行号。
,美元python demo.py a.txt 第1行:你好 a.txt 第2行:世界 b.txt 第3行:你好 b.txt 第4行:python
如果想要在读取多个文件的时候,也能读取原文件的真实行号,可以使用fileinput.filelineno()方法
import fileinput with fileinput.input(文件=(& # 39;a.txt& # 39;,, & # 39; b.txt& # 39;)), as 文件: ,,,for line 拷贝文件: ,,,,,,,印刷(f # 39; {fileinput.filename()},第{fileinput.filelineno()}行:,{线}& # 39;,,结束=& # 39;& # 39;)
运行后,输出如下
,美元python demo.py a.txt 第1行:你好 a.txt 第2行:世界 b.txt 第1行:你好 b.txt 第2行:python
这个用法和水珠模块简直是绝配
import fileinput import 水珠 for line  fileinput.input拷贝(glob.glob (“* .txt")): ,,,if fileinput.isfirstline (): ,,,,,,,印刷(& # 39;& # 39;* 20日,f # 39; Reading {fileinput.filename ()}……& # 39;,, & # 39; & # 39; * 20) ,,,print (str (fileinput.lineno ()), +, & # 39;:, & # 39;, +, line.upper(),,结束=啊?
运行效果如下
,美元python demo.py - - - - - - - - - - - - - - - - - - - - - -,Reading b.txt…, - - - - - - - - - - - - - - - - - - - - - 1:你好 2:PYTHON - - - - - - - - - - - - - - - - - - - - - -,Reading a.txt…, - - - - - - - - - - - - - - - - - - - - - 3:你好 4:世界,
4。读取的同时备份文件
fileinput。输入有一个备份参数,你可以指定备份的后缀名,比如. bak
import fileinput with fileinput.input (=(“a.txt",),文件,备份=?bak"), as 文件: ,,,for line 拷贝文件: ,,,,,,,印刷(f # 39; {fileinput.filename()},第{fileinput.lineno()}行:,{线}& # 39;,,结束=& # 39;& # 39;)python如何使用fileinput读取文件