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 30 Python
用Python实现协同过滤的教程
Apr 08 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
python办公自动化之excel的操作
May 23 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的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
node.js中watch机制详解
2014/11/17 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
layui实现三级联动效果
2019/07/26 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
python找出完数的方法
2018/11/12 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
pytorch之添加BN的实现
2020/01/06 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
如何解决安装python3.6.1失败
2020/07/01 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
python代码实现猜拳小游戏
2020/11/30 Python
优秀团员个人的自我评价
2013/10/02 职场文书
通信生自我鉴定
2014/01/18 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
优秀实习生感言
2014/03/01 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
2015年外联部工作总结
2015/04/03 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
JS中如何优雅的使用async await详解
2021/10/05 Javascript