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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
Apr 02 Python
Python 静态方法和类方法实例分析
Nov 21 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
python内打印变量之%和f的实例
Feb 19 Python
AI:如何训练机器学习的模型
Apr 16 Python
python实现的人脸识别打卡系统
May 08 Python
python实现简单的井字棋
May 26 Python
virtualenv隔离Python环境的问题解析
Jun 21 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 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python lambda表达式用法实例分析
2018/12/25 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
python xlsxwriter模块的使用
2020/12/24 Python
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
计算机专业毕业生自我鉴定
2014/01/16 职场文书
网络信息安全承诺书
2014/03/26 职场文书
代领报检证委托书范本
2014/10/11 职场文书
辞职信怎么写
2015/02/27 职场文书
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript
Redis入门基础常用操作命令整理
2022/06/01 Redis