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分割文件的常用方法
Nov 01 Python
使用Python的Twisted框架实现一个简单的服务器
Apr 16 Python
详解Python中time()方法的使用的教程
May 22 Python
Python爬虫爬取美剧网站的实现代码
Sep 03 Python
正确理解python中的关键字“with”与上下文管理器
Apr 21 Python
对python中词典的values值的修改或新增KEY详解
Jan 20 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
python实现可变变量名方法详解
Jul 01 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
Python将list元素转存为CSV文件的实现
Nov 16 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
动态新闻发布的实现及其技巧
2006/10/09 PHP
PHP教程 基本语法
2009/10/23 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
Vue中如何实现proxy代理
2018/04/20 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
python实现五子棋程序
2020/04/24 Python
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
存储过程和函数的区别
2013/05/28 面试题
财务工作个人求职的自我评价
2013/12/19 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
大型营销活动计划书
2014/04/28 职场文书
励志演讲稿大全
2014/08/21 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
教师工作态度自我评价
2015/03/05 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
分享Python获取本机IP地址的几种方法
2022/03/17 Python
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript