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对小数进行除法运算的正确方法示例
Aug 25 Python
Python抓取京东图书评论数据
Aug 31 Python
python求crc32值的方法
Oct 05 Python
python动态网页批量爬取
Feb 14 Python
Python教程之全局变量用法
Jun 27 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
PyQt5实现简易计算器
May 30 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
Python 读取位于包中的数据文件
Aug 07 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脚本加密专家php解密算法
2020/09/13 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
php上传文件常见问题总结
2015/02/03 PHP
php解析xml方法实例详解
2015/05/12 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
javascript动态加载二
2012/08/22 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
js返回顶部实例分享
2016/12/21 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
小学科学教学反思
2014/01/26 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
升学宴来宾致辞
2015/07/27 职场文书
php中pcntl_fork详解
2021/04/01 PHP
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android