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 解析XML python模块xml.dom解析xml实例代码
Feb 07 Python
Python Deque 模块使用详解
Jul 04 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
Python中if elif else及缩进的使用简述
May 31 Python
python处理数据,存进hive表的方法
Jul 04 Python
flask入门之表单的实现
Jul 18 Python
Python控制Firefox方法总结
Jun 03 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
python获取Linux发行版名称
Aug 30 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 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操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
Laravel实现表单提交
2017/05/07 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
python判断字符串是否包含子字符串的方法
2015/03/24 Python
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
python框架django基础指南
2016/09/08 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
python Pygame的具体使用讲解
2017/11/03 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
Python实现购物车购物小程序
2018/04/18 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
大学生村官任职感言
2014/01/09 职场文书
集体生日活动方案
2014/08/18 职场文书
2014年销售助理工作总结
2014/12/01 职场文书