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目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
python继承和抽象类的实现方法
Jan 14 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
Python使用django搭建web开发环境
Jun 09 Python
pycharm安装和首次使用教程
Aug 27 Python
python调用百度语音识别api
Aug 30 Python
基于python if 判断选择结构的实例详解
May 06 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
Python 切分数组实例解析
Nov 07 Python
python获取linux系统信息的三种方法
Oct 14 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 Python
python 基于selenium实现鼠标拖拽功能
Dec 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
PHP 错误之引号中使用变量
2009/05/04 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
layui导航栏实现代码
2017/05/19 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
python学习手册中的python多态示例代码
2014/01/21 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
Python读取properties配置文件操作示例
2018/03/29 Python
python3实现多线程聊天室
2018/12/12 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
用python发送微信消息
2020/12/21 Python
阿里云:Aliyun.com
2017/02/15 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
教育科研先进个人材料
2014/01/26 职场文书
开学季活动策划方案
2014/02/28 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL
MYSQL如何查看操作日志详解
2022/05/30 MySQL
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL