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 tempfile模块学习笔记(临时文件)
May 25 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
python 文件操作api(文件操作函数)
Aug 28 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
用python写一个windows下的定时关机脚本(推荐)
Mar 21 Python
python绘制直线的方法
Jun 30 Python
python 拼接文件路径的方法
Oct 23 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
Dec 05 Python
Python当中的array数组对象实例详解
Jun 12 Python
Python 中pandas索引切片读取数据缺失数据处理问题
Oct 09 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
如何用python开发Zeroc Ice应用
Jan 29 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中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
php中使用url传递数组的方法
2015/02/11 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
Js 随机数产生6位数字
2010/05/13 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
基于jQuery插件实现点击小图显示大图效果
2016/05/11 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
python处理cookie详解
2014/02/07 Python
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
Django中Model的使用方法教程
2018/03/07 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
python输出带颜色字体实例方法
2019/09/01 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
python asyncio 协程库的使用
2021/01/21 Python
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
建筑专业自我鉴定
2013/10/22 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python
linux下安装redis图文详细步骤
2021/12/04 Redis
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server