Python fileinput模块如何逐行读取多个文件

 更新时间:2020年10月05日 08:52:53   作者:lincappu  
这篇文章主要介绍了Python fileinput模块如何逐行读取多个文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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() 函数中文件名的先后次序。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • R语言 vs Python对比:数据分析哪家强?

    R语言 vs Python对比:数据分析哪家强?

    R语言和Python在数据分析方法都各有所长,两者现在可以说是都非常热门的,那么这篇文章就来给大家总结介绍关于R语言和Python数据分析的相关资料,并给大家推荐了一些相关的书籍学习,需要的朋友可以参考借鉴,下面随着小编来一起看看吧。
    2017-11-11
  • 2023巨详细的Python安装库教程(以pycharm和Anaconda安装pygame为例)

    2023巨详细的Python安装库教程(以pycharm和Anaconda安装pygame为例)

    这篇文章主要给大家介绍了巨详细的Python安装库教程,文中以pycharm和Anaconda安装pygame为例,通过图文介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Python 线性回归分析以及评价指标详解

    Python 线性回归分析以及评价指标详解

    这篇文章主要介绍了Python 线性回归分析以及评价指标详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python中的Dataset和Dataloader详解

    Python中的Dataset和Dataloader详解

    这篇文章主要介绍了Python中的Dataset和Dataloader详解,DataLoader与DataSet是PyTorch数据读取的核心,是构建一个可迭代的数据装载器,每次执行循环的时候,就从中读取一批Batchsize大小的样本进行训练,需要的朋友可以参考下
    2023-07-07
  • 详解Python中的分组函数groupby和itertools)

    详解Python中的分组函数groupby和itertools)

    这篇文章主要介绍了Python中的分组函数groupby和itertools)的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07
  • Python numpy.interp的实例详解

    Python numpy.interp的实例详解

    本文主要介绍了Python numpy.interp的实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 基于 Django 的手机管理系统实现过程详解

    基于 Django 的手机管理系统实现过程详解

    这篇文章主要介绍了基于 Django 的手机管理系统过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 基于Flask实现一个智能的多语言Hello World服务器

    基于Flask实现一个智能的多语言Hello World服务器

    这篇文章主要为大家详细介绍了如何使用Flask框架创建一个智能的多语言Hello World服务器,能够自动检测访问者的浏览器语言设置,需要的可以了解下
    2025-03-03
  • 使用ITK-SNAP进行抠图操作并保存mask的实例

    使用ITK-SNAP进行抠图操作并保存mask的实例

    这篇文章主要介绍了使用ITK-SNAP进行抠图操作并保存mask的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 值得收藏,Python 开发中的高级技巧

    值得收藏,Python 开发中的高级技巧

    这篇文章主要介绍了Python 开发中的高级技巧,非常不错,具有收藏价值,感兴趣的朋友一起看看吧
    2018-11-11

最新评论