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操作列表之List.insert()方法的使用
May 20 Python
python实现的系统实用log类实例
Jun 30 Python
python搭建微信公众平台
Feb 09 Python
python实现redis三种cas事务操作
Dec 19 Python
Python序列循环移位的3种方法推荐
Apr 09 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
python爬取网页转换为PDF文件
Jun 07 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
python字符串的拼接方法总结
Nov 18 Python
Python实现密码薄文件读写操作
Dec 16 Python
Python sorted对list和dict排序
Jun 09 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
PHP array_push 数组函数
2009/12/26 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
jquery ajax例子返回值详解
2012/09/11 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
js实现微信分享代码
2020/10/11 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
Python 详解基本语法_函数_返回值
2017/01/22 Python
有趣的python小程序分享
2017/12/05 Python
python构建指数平滑预测模型示例
2019/11/21 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
建筑设计专业求职自我评价
2014/03/02 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
员工离职通知函
2015/04/25 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers