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遍历文件夹下所有excel文件
Jan 03 Python
Django中使用celery完成异步任务的示例代码
Jan 23 Python
Php多进程实现代码
May 07 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
Django使用中间键实现csrf认证详解
Jul 22 Python
Django CBV与FBV原理及实例详解
Aug 12 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
使用Rasterio读取栅格数据的实例讲解
Nov 26 Python
python实现TCP文件传输
Mar 20 Python
Pandas读取csv时如何设置列名
Jun 02 Python
python两种注释用法的示例
Oct 09 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/05/30 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
PHP学习之正则表达式
2011/04/17 PHP
纯js简单日历实现代码
2013/10/05 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
JS回调函数深入理解
2019/10/16 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
Sanic框架路由用法实例分析
2018/07/16 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
flask 实现token机制的示例代码
2019/11/07 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
2014年村官工作总结
2014/11/24 职场文书
Spring Boot实现文件上传下载
2022/08/14 Java/Android