首页 > 行业资讯 > Python教程—常用标准库fileinput

Python教程—常用标准库fileinput

时间:2023-05-16 来源: 浏览:

Python教程—常用标准库fileinput

点击关注 Python架构师
Python架构师

gh_1d7504e4dee1

回复:python,领取Python面试题。分享Python教程,Python架构师教程,Python爬虫,Python编程视频,Python脚本,Pycharm教程,Python微服务架构,Python分布式架构,Pycharm注册码。

收录于合集
#python编程 96
#python教程 72
#python技术 100
#python 123
#python程序员 64
整理:python架构师

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

典型的用法:

import fileinput for 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语句结束之后被关闭,无论期间是否抛出过异常,确保文件安全。

点击领取Python面试题手册

Python从入门到进阶知识手册

主要属性

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 fileinput with fileinput.input(files= "d:1.txt" ) as f: for line in f: line = line.rstrip() num = fileinput.lineno() print( "#%d %s" % (num, line))

运行结果是:

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

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

程序员交流群

程序员交流群正式开放, 现在 可直接扫码加入 ,成功加入后即可获取  福利礼包 (扫码查看)

扫描下方二维码,逆袭成长

 
热门推荐
  • 用Python爬了微信好友,原来他们是这样的人...

  • Python教程—常用标准库queue

  • 程序员离职后躲老家山洞 2 年,敲出 45 万行代码...

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐