fileinput模块用于对标准输入或多个文件进行逐行遍历。这个模块的使用非常简单,相比open()方法批量处理文件,fileinput模块可以对文件、行号进行一定的控制。

典型的用法:

import fileinputfor line in fileinput.input():process(line)

如果代码中没有指定操作的文件对象,则默认是从stdin获得的sys.argv[1:]中的参数。

基本方法

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

创建并返回一个FileInput类的实例。files指定要处理的文件,可以是一个多元元组,表示按顺序批量处理元组内文件。inplace参数最关键,可设置是否对源文件进行修改;backup则用于指定对源文件进行备份的后缀名;mode用于指定文件读写方式,和open()方法的定义一样, 默认为只读‘r’。同样的,fileinput.input()方法也可以作为一个上下文管理器使用,如下所示:

with fileinput.input(files=('spam.txt', 'eggs.txt')) as f:for line in f:process(line)

这将保证input会在with语句结束之后被关闭,无论期间是否抛出过异常,确保文件安全。

主要属性

fileinput.filename()

返回当前正在处理的文件名(也就是包含了当前正在处理的文本行的文件)

fileinput.fileno()

返回当前文件的总行数。

fileinput.lineno()

返回当前的行数,这个行数是累计的。多个文件的行数会累加起来。

fileinput.filelineno()

返回当前正在处理的文件的当前行数。每次处理完一个文件并开始处理下一个文件时,该值会重置为1,重新开始计数。

fileinput.isfirstline()

当前行是当前文件的第一行时返回True,否则False

fileinput.isstdin()

当前操作对象为sys.stdin时返回True否则False。

fileinput.nextfile()

关闭当前的文件,跳到下一个文件,跳过的行不计数。

fileinput.close()

关闭整个文件链,结束迭代。

实例展示

现在有一个1.txt文件,内容如下:

愿圣光与你同在!为了部落!兽人永不为奴!你们这是自寻死路!复活吧我的勇士!为你而战我的女士!

我们的需求是为每一行添加“#行号”。

import fileinputwith fileinput.input(files="d:\\1.txt") as f:for line in f:line = line.rstrip()num = fileinput.lineno()print("#%d\t%s" % (num, line))

运行结果是:

#1  愿圣光与你同在!
#2
#3  为了部落!
#4
#5  兽人永不为奴!
#6
#7  你们这是自寻死路!
#8
#9  复活吧我的勇士!
#10
#11 为你而战我的女士!

如果你想同步修改源文件,添加inplace=True参数即可,但一定要小心,请确认自己的行为,防止误操作!

请继续关注我

记得点赞加关注哦,记得加鸡腿啊

爬虫(四十六)通用标准库 queue(三十七)相关推荐

  1. 爬虫 (三十九) 常用标准库 OS (三十)

    长文预警  阅读约5分钟  相信如果你慢慢把这篇文章读完,然后合并实践 经过上述三节,穿插讲了一下HTTP的知识点,以及浏览器的界面资源的获取,以及运行过程,我们可以收获到很多东西,如果没有好好看的伙 ...

  2. IOS音视频(四十六)离线在线语音识别方案

    IOS音视频(四十六)离线在线语音识别方案 IOS音视频(四十六)离线在线语音识别方案 方案一:Siri语音识别 Siri语音识别简介 Siri语音识别功能类介绍 Siri语音识别功能集成 方案二:百 ...

  3. 第四十六章:SpringBoot RabbitMQ完成消息延迟消费

    在2018-3-1日SpringBoot官方发版了2.0.0.RELEASE最新版本,新版本完全基于Spring5.0来构建,JDK最低支持也从原来的1.6也改成了1.8,不再兼容1.8以下的版本,更 ...

  4. 【正点原子STM32连载】第四十六章 FATFS实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  5. Python编程基础:第四十六节 super函数Super Function

    第四十六节 super函数Super Function 前言 实践 前言 使用super函数可以在子类中直接调用父类的方法.通常情况下,我们会将一些通用的属性或方法定义在父类中,子类可以直接使用父类中 ...

  6. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  7. pdfstamper生成pdf无法显示汉字_正点原子STM32F4/F7水星开发板资料连载第四十六章 汉字显示实验...

    1)实验平台:正点原子水星 STM32F4/F7 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载 ...

  8. 四十六、Fluent壁面函数的选取依据

    1. Fluent壁面函数 前面介绍了壁面函数的由来及相关的理论,这里我们介绍Fluent中壁面函数的选取依据.牢记:使用壁面函数的前提是y+>15 Fluent在两种湍流模型中需要选择壁面函数 ...

  9. 【Visual C++】游戏开发笔记四十六 浅墨DirectX教程十四 模板测试与镜面特效专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处.   文章链接: http://blog.csdn.net/zhmxy555/article/details/8632184 作者:毛星云( ...

最新文章

  1. Linux 下 pmap 命令的使用
  2. 三值的排序 Sorting a Three-Valued Sequence
  3. 年终总结 | 2021红包点赞?(文末有刺激的福利哦)
  4. Linux 中的远程登陆
  5. python中的成员运算符_在Python中使用成员运算符的示例
  6. 政策推动加速5G发展 全球统一标准成大势所趋
  7. childactor movable
  8. EclipseIDEA使用经验
  9. 1.1介绍线程和运行(Introducing Thread and Runnable)
  10. HDU 2686 MCMF
  11. 银监计算机类考试题库,干货!国考银监会财经类面试题库
  12. nyoj248 BUYING FEED(贪心orDP)
  13. Apollo入门使用手册
  14. MySql创建联合索引
  15. java例外站点添加不上,java例外站点添加不了
  16. Typora自定义主题#简约风主题
  17. Oracle 11G 的客户端,不再支持连接到ORACLE 8I
  18. 【海岛吉他7】吉他琴弦间音程度数关系
  19. STM32f103C8定时器输出PWM波信号
  20. android 日倒计时计算器,分秒倒数日app下载-分秒倒数日(时间计算器)安卓版下载 v2.0.0安卓版_5577安卓网...

热门文章

  1. tensorflow 数据输入与特征工程
  2. 对 SE/GE 的改进 ECA
  3. 蚂蚁金服首席架构师何昌华:开源 SQLFlow 是牛刀初试,实时大数据系统才是未来基石...
  4. ADS8684 驱动
  5. 20180101心情总结
  6. Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法
  7. Rust机器学习之tch-rs
  8. Linux统计文件夹下的文件数量
  9. 新手自主创业需要注意哪些误区
  10. 通过nginx代理vue,vue再访问后端时出错记录