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函数参数*args**kwargs用法实例
Dec 04 Python
Python实现的下载8000首儿歌的代码分享
Nov 21 Python
用Python进行TCP网络编程的教程
Apr 29 Python
详解python 发送邮件实例代码
Dec 22 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
TensorFlow的权值更新方法
Jun 14 Python
Python中请不要再用re.compile了
Jun 30 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
python中pathlib模块的基本用法与总结
Aug 17 Python
python 6行代码制作月历生成器
Sep 18 Python
Python中使用subprocess库创建附加进程
May 11 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多维数组去掉重复值示例分享
2014/03/02 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
聊一聊Vue.js过渡效果
2016/09/07 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
PyQt5实现下载进度条效果
2018/04/19 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
校园安全演讲稿
2014/05/09 职场文书
完美的中文自荐信
2014/05/24 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
综合素质评价自我评价
2015/03/06 职场文书
《藏戏》教学反思
2016/02/23 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript