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实现遍历目录的方法【测试可用】
Mar 22 Python
python tensorflow基于cnn实现手写数字识别
Jan 01 Python
Python中存取文件的4种不同操作
Jul 02 Python
python版飞机大战代码分享
Nov 20 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
python+openCV利用摄像头实现人员活动检测
Jun 22 Python
ZABBIX3.2使用python脚本实现监控报表的方法
Jul 02 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
python基于tkinter制作下班倒计时工具
Apr 28 Python
基于Python实现nc批量转tif格式
Aug 14 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 数组教程 定义数组
2009/10/23 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
python3.4实现邮件发送功能
2018/05/28 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
施工材料员岗位职责
2014/02/12 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers