BraveZhao的个人博客分享 http://blog.sciencenet.cn/u/BraveZhao

博文

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

已有 2122 次阅读 2019-6-11 22:59 |个人分类:Python|系统分类:科研笔记

参考: http://c.biancheng.net/view/2547.html

        https://www.cnblogs.com/jinjiangongzuoshi/p/5637793.html

fileinput模块是python的标准库之一,不属于第三方库,随python安装包自带

用fileinput对文件进行循环遍历,格式化输出,查找、替换等操作,非常方便,fileinput 模块提供了如下函数可以把多个输入流合并在一起:

fileinput.input(files=None, inplace=False, backup='', bufsize=0, mode='r',openhook=None)

files:             #文件的路径列表,默认是stdin方式,多文件;   用法:['1.txt','2.txt',...]

inplace:        #是否将标准输出的结果写回文件,默认不取代;

backup:        #备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖;

bufsize:        #缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可;

mode:          #读写模式,默认为只读;

openhook:   #该钩子用于控制打开的所有文件,比如说编码方式等


该函数中的 files 参数用于指定多个文件输入流。该函数返回一个 FileInput 对象。

当程序使用上面函数创建了 FileInput 对象之后,即可通过 for 循环来遍历文件的每一行。

典型用法:

import fileinput

for line in fileinput.input():

      process(line)

     

此外,fileinput 还提供了如下全局函数来判断正在读取的文件信息:

  • fileinput.filename():返回正在读取的文件的文件名。

  • fileinput.fileno():返回当前文件的文件描述符(file descriptor),该文件描述符是一个整数。

      文件描述符是一个文件的代号,其值为一个整数。后续章节将会介绍关于文件描述符的操作。

  • fileinput.lineno():返回当前读取的行号。

  • fileinput.filelineno():返回当前读取的行在其文件中的行号。

  • fileinput.isfirstline():返回当前读取的行在其文件中是否为第一行。

  • fileinput.isstdin():返回最后一行是否从 sys.stdin 读取。程序可以使用“-”代表从 sys.stdin 读取。

  • fileinput.nextfile():关闭当前文件,开始读取下一个文件。

  • fileinput.close():关闭 FileInput 对象。



https://blog.sciencenet.cn/blog-3388193-1184433.html

上一篇:Python open函数:打开指定文件
下一篇:ubuntu 安装 pip
收藏 IP: 157.0.78.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 09:18

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部