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


Posted in Python onOctober 05, 2020

Python 提供了 fileinput 模块,通过该模块中的 input() 函数,我们能同时打开指定的多个文件,还可以逐个读取这些文件中的内容。

fileinput 模块中 input() 该函数的语法格式如下:

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

此函数会返回一个 FileInput 对象,它可以理解为是将多个指定文件合并之后的文件对象。其中,各个参数的含义如下:

  • files:多个文件的路径列表;
  • inplace:用于指定是否将标准输出的结果写回到文件,此参数默认值为 False;
  • backup:用于指定备份文件的扩展名;
  • bufsize:指定缓冲区的大小,默认为 0;
  • mode:打开文件的格式,默认为 r(只读格式);
  • openhook:控制文件的打开方式,例如编码格式等。

注意,和 open() 函数不同,input() 函数不能指定打开文件的编码格式,这意味着使用该函数读取的所有文件,除非以二进制方式进行读取,否则该文件编码格式都必须和当前操作系统默认的编码格式相同,不然 Python 解释器可能会提示 UnicodeDecodeError 错误。

和 open() 函数返回单个的文件对象不同,fileinput 对象无需调用类似 read()、readline()、readlines() 这样的函数,直接通过 for 循环即可按次序读取多个文件中的数据。

值得一提的是,fileinput 模块还提供了很多使用的函数(如表 1 所示),通过调用这些函数,可以帮我们更快地实现想要的功能。

表 fileinput 模块常用函数

函数名 功能描述
fileinput.filename() 返回当前正在读取的文件名称。
fileinput.fileno() 返回当前正在读取文件的文件描述符。
fileinput.lineno() 返回当前读取了多少行。
fileinput.filelineno() 返回当前正在读取的内容位于当前文件中的行号。
fileinput.isfirstline() 判断当前读取的内容在当前文件中是否位于第 1 行。
fileinput.nextfile() 关闭当前正在读取的文件,并开始读取下一个文件。
fileinput.close() 关闭 FileInput 对象。

文件描述符是一个文件的代号,其值为一个整数。后续章节将会介绍关于文件描述符的操作。

讲了这么多,接下来举个例子。假设使用 input() 读取 2 个文件,分别为 my_file.txt 和 file.txt,它们位于同一目录,且各自包含的内容如下所示:

#file.txt
Python教程
http://c.biancheng.net/python/

#my_file.txt
Linux教程
http://c.biancheng.net/linux_tutorial/

下面程序演示了如何使用 input() 函数依次读取这 2 个文件:

import fileinput
#使用for循环遍历 fileinput 对象
for line in fileinput.input(files=('my_file.txt', 'file.txt')):
# 输出读取到的内容
print(line)
# 关闭文件流
fileinput.close()

在使用 fileinput 模块中的 input() 函数之前,一定要先引入 fileinput 模块。

程序执行结果为:

Linux教程

http://c.biancheng.net/linux_tutorial/
Python教程

http://c.biancheng.net/python/

显然,读取文件内容的次序,取决于 input() 函数中文件名的先后次序。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中global与nonlocal比较
Nov 21 Python
Python3.x中自定义比较函数
Apr 24 Python
Python中的默认参数实例分析
Jan 29 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
python检测IP地址变化并触发事件
Dec 26 Python
python版百度语音识别功能
Jul 09 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
Python reques接口测试框架实现代码
Jul 28 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 Python
用python爬虫批量下载pdf的实现
Dec 01 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 #Python
Python中random模块常用方法的使用教程
Oct 04 #Python
python代数式括号有效性检验示例代码
Oct 04 #Python
关于Python字符编码与二进制不得不说的一些事
Oct 04 #Python
Python实现EM算法实例代码
Oct 04 #Python
python em算法的实现
Oct 03 #Python
浅析Python中字符串的intern机制
Oct 03 #Python
You might like
谈谈PHP语法(4)
2006/10/09 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
Django URL传递参数的方法总结
2016/08/28 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
客房主管岗位职责
2013/12/09 职场文书
高三英语教学反思
2014/01/13 职场文书
小松树教学反思
2014/02/11 职场文书
公司董事长岗位职责
2014/06/08 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python