python文件处理fileinput使用方法详解


Posted in Python onJanuary 02, 2020

这篇文章主要介绍了python文件处理fileinput使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、介绍

fileinput模块可以对一个或多个文件中的内容进行迭代、遍历等操作,我们常用的open函数是对一个文件进行读写操作。

fileinput模块的input()函数比open函数更高效和好用,体现在:

input()函数生成一个迭代器,保证了在遇到大文件的读取时不会占用太大的内存。
用fileinput对文件进行循环遍历,格式化输出,查找、替换等操作,还能获取每一行的行号等等,非常方便。

二、fileinput读取文件函数input的使用格式

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

files:     # 文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...]
inplace:    # 是否将标准输出的结果写回文件,默认不取代
backup:    # 备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。
bufsize:    # 缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可
mode:

# 读写模式,默认为只读
openhook:
  # 该钩子用于控制打开的所有文件,比如说编码方式等;

三、fileinput中的常用函数

函数 描述
input([files[, inplace[, backup]]])  帮助迭代多个输入流中的行
filename()  返回当前文件的名称
lineno()   返回(累计的)当前行号
filelineno() 返回在当前文件中的行号
isfirstline() 检查当前行是否是文件中的第一行
isstdin() 检查最后一行是否来自sys.stdin
nextfile() 关闭当前文件并移到下一个文件
close()   关闭序列

fileinput.input是最重要的函数,它返回一个迭代器对象,如果要处理多个文件,可以向这个函数提供一个或多个文件名。

还可将参数inplace设置为True(inplace=True),对于你访问的每一行,都需打印出替代内容,这些内容将被写回到当前输入文件中,此时可选参数backup用于给从原始文件创建的备份文件指定扩展名。

四、示例

1、读取多个文件

# a.txt文件的内容
"""
我
是
好
人
"""

# b.txt文件的内容
"""
他
是
坏
人
"""

# 读取一个文件
for line in fileinput.input("a.txt"):
  print(line)


# 读取多个文件
for line in fileinput.input(["a.txt", "b.txt"]):
  print(line)

2、修改文件并备份原文件

# -*_ coding:utf-8 -*-
import fileinput
for line in fileinput.input("a.txt", backup=".bak", inplace=True):
  line = line.replace("我", "小明")
  print(line)

# 结果
当前文件夹会生成a.txt.bak文件,内容是之前的内容,
而a.txt文件已经被修改了,把"我"变成了"小明"

3、输出当前行号和行内容

# -*_ coding:utf-8 -*-
import fileinput

for line in fileinput.input("a.txt"):
  lineno = fileinput.filelineno()
  print lineno, line

# 结果
1 我
2 是
3 好、
4 人

4、输出文件名

# -*_ coding:utf-8 -*-
import fileinput
for line in fileinput.input("a.txt"):
  # 在第一行前面先输出文件名
  if fileinput.isfirstline():
    print fileinput.filename()
  print line
# 结果
a.txt
我
是
好、
人

其他函数,都是类似的使用方法,这里就不全部介绍了。

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

Python 相关文章推荐
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
python列表生成式与列表生成器的使用
Feb 23 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python创建字典的八种方式
Feb 27 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
django删除表重建的实现方法
Aug 28 Python
python global和nonlocal用法解析
Feb 03 Python
python判断正负数方式
Jun 03 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
Python使用openpyxl批量处理数据
Jun 23 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 #Python
Pytorch的mean和std调查实例
Jan 02 #Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 #Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 #Python
pytorch实现focal loss的两种方式小结
Jan 02 #Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 #Python
基于torch.where和布尔索引的速度比较
Jan 02 #Python
You might like
php公用函数列表[正则]
2007/02/22 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
详谈javascript中DOM的基本属性
2015/02/26 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python中的类学习笔记
2014/09/23 Python
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
Python正则捕获操作示例
2017/08/19 Python
python实现函数极小值
2019/07/10 Python
python圣诞树编写实例详解
2020/02/13 Python
python中什么是面向对象
2020/06/11 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
学校安全工作制度
2014/01/19 职场文书
益达广告词
2014/03/14 职场文书
会计工作检讨书
2015/02/19 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技