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 中__name__ = '__main__' 的作用
Jul 05 Python
Python Tkinter GUI编程入门介绍
Mar 10 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
python 检查是否为中文字符串的方法
Dec 28 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
TensorBoard 计算图的查看方式
Feb 15 Python
python实现按日期归档文件
Jan 30 Python
pytorch 实现多个Dataloader同时训练
May 29 Python
详解PyTorch模型保存与加载
Apr 28 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开发框架总结收藏
2008/04/24 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
让textarea自动调整大小的js代码
2011/04/12 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
python中pycurl库的用法实例
2014/09/30 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
Python基于当前时间批量创建文件
2020/05/07 Python
浅析Python 多行匹配模式
2020/07/24 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
杭州时比特电子有限公司SQL
2013/08/22 面试题
经典优秀个人求职自荐信格式
2013/09/25 职场文书
大学毕业生个人自荐信范文
2014/01/08 职场文书
父母对孩子说的话
2014/04/12 职场文书
给学校建议书范文
2014/05/13 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书