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中实现对list做减法操作介绍
Jan 09 Python
python读取文本中的坐标方法
Oct 14 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
python命名空间(namespace)简单介绍
Aug 10 Python
Python如何实现动态数组
Nov 02 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
如何用python免费看美剧
Aug 11 Python
Django中使用Celery的方法步骤
Dec 07 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
Jan 24 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
我用php+mysql写的留言本
2006/10/09 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
春节活动策划方案
2014/01/24 职场文书
批评与自我批评材料
2014/02/15 职场文书
秋游活动策划方案
2014/02/16 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
孔子观后感
2015/06/08 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
Nginx利用Logrotate实现日志分割
2022/05/20 Servers