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简单实现旋转图片的方法
May 30 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
Numpy中的mask的使用
Jul 21 Python
python实现感知机线性分类模型示例代码
Jun 02 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
Django的性能优化实现解析
Jul 30 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
Python常用类型转换实现代码实例
Jul 28 Python
python音频处理的示例详解
Dec 23 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页面局部刷新功能的实现小结
2013/06/21 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
js压缩利器
2007/02/20 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
基于jquery的无刷新分页技术
2011/06/11 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
常用jQuery代码分享
2015/07/14 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
PyQt5实现下载进度条效果
2018/04/19 Python
python找出因数与质因数的方法
2019/07/25 Python
python输入错误后删除的方法
2019/10/12 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
大学生饮食连锁店创业计划书
2014/01/17 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL