python如何使用fileinput读取文件

  介绍

这篇文章主要介绍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读取文件