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实现获取某天是某个月中的第几周
Feb 11 Python
分析Python编程时利用wxPython来支持多线程的方法
Apr 07 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
Python File readlines() 使用方法
Mar 19 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
用Python画小女孩放风筝的示例
Nov 23 Python
基于python代码批量处理图片resize
Jun 04 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
python实现不同数据库间数据同步功能
Feb 25 Python
Python移位密码、仿射变换解密实例代码
Jun 27 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
Python实用日期时间处理方法汇总
2015/05/09 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
python缩进长度是否统一
2020/08/02 Python
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
送货司机岗位职责
2013/12/11 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
涨价通知
2015/04/23 职场文书
公司晚会主持词
2019/04/17 职场文书
话题作文之诚信
2019/11/28 职场文书
如何用python绘制雷达图
2021/04/24 Python
Python实现机器学习算法的分类
2021/06/03 Python
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL