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下MySQLdb用法实例分析
Jun 08 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
python 使用get_argument获取url query参数
Apr 28 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
Python subprocess模块功能与常见用法实例详解
Jun 28 Python
Python向excel中写入数据的方法
May 05 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
Jun 21 Python
JupyterNotebook设置Python环境的方法步骤
Dec 03 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 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
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
react-router中的属性详解
2017/06/01 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
Python多线程学习资料
2012/12/19 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
深入理解Django中内置的用户认证
2017/10/06 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python之修改图片像素值的方法
2019/07/03 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
Python语言异常处理测试过程解析
2020/01/08 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
生物技术专业研究生自荐信
2013/09/22 职场文书
物业经理求职自我评价
2013/09/22 职场文书
法律顾问服务方案
2014/05/15 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
酒店管理求职信
2014/06/09 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
新学期主题班会
2015/08/17 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
python munch库的使用解析
2021/05/25 Python
Go语言基础map用法及示例详解
2021/11/17 Golang