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文件处理之fileinput的更多相关文章
- python文件和文件夹訪问File and Directory Access
http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- (原创)Python文件与文件系统系列(1)—— file 对象
本系列将从四个部分简单介绍Python对文件系统的操作与支持: 1. Python内置的 file 对象 2. Python的os模块对文件.文件系统操作的支持 3. Python的os.path模块 ...
- python文件处理复习
1.创建文件 >>> file('test.txt','w') -->在当前路径下创建文件 test.txt是文件名 w是打开文件的方式,r是读,w是写,a是追加,如果当前 ...
- [ Python入门教程 ] Python文件基本操作
本文将python文件操作实例进行整理,以便后续取用. 文件打开和创建 Python中使用open()函数打开或创建文件.open()的声明如下: open(name[, mode[, bufferi ...
- 第十二章 Python文件操作【转】
12.1 open() open()函数作用是打开文件,返回一个文件对象. 用法格式:open(name[, mode[, buffering[,encoding]]]) -> file obj ...
- python文件的读写总结
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- Linux下Python 文件内容替换脚本
Linux下Python 文件替换脚本 import sys,os if len(sys.argv)<=4: old_text,new_text = sys.argv[1],sys.argv[2 ...
- 【Python文件处理】递归批处理文件夹子目录内所有txt数据
因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...
随机推荐
- oslab oranges 一个操作系统的实现 实验二 认识保护模式
https://github.com/yyu/osfs00 实验目的: 理解x86架构下的段式内存管理 掌握实模式和保护模式下段式寻址的组织方式. 关键数据结构.代码组织方式 掌握实模式与保护模式的切 ...
- Bootstrap巨幕
这是一个轻量.灵活的组件,它能延伸至整个浏览器视口来展示网站上的关键内容. jumbotron修饰 <div class="jumbotron"> <h1> ...
- python 爬取腾讯视频的全部评论
一.网址分析 查阅了网上的大部分资料,大概都是通过抓包获取.但是抓包有点麻烦,尝试了F12,也可以获取到评论.以电视剧<在一起>为例子.评论最底端有个查看更多评论猜测过去应该是 Ajax ...
- Flutter Vignettes
Flutter Vignettes Flutter Animation https://flutter.gskinner.com/ https://github.com/gskinnerTeam/fl ...
- vue & child component & props
vue & child component & props vue pass data to child component https://vuejs.org/v2/guide/co ...
- svg & regex
svg & regex https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reg ...
- 没想到即将上线的NGK生态应用这么厉害?!
话说这即将上线的NGK公链可不是闹着玩的,这条公链的蛰伏时间长达两年,恐怕这个准备时间,连最初的区块链1.0时代的项目都无法比拟,现在的话那都差太远了. 编程一段代码并不难,难的是耐得住赚快钱的心.人 ...
- Java对象内存布局
本文转载自Java对象内存布局 导语 首先直接抛出问题 Unsafe.getInt(obj, fieldOffset)中的fieldOffset是什么, 类似还有compareAndSwapX(obj ...
- ajax缺点
ajax请求在SEO中效率低,SEO就是关键字搜索的匹配度. 比如在百度搜索Java,一般来说内容中出现Java的次数越多排名越靠前,当使用ajax时,它的异步刷新导致必须是页面刷新出来才去刷新数据, ...
- Vulhun-y0usef靶机通关
Vulhub-y0sef靶机通关 安装靶机环境,下载地址:https://www.vulnhub.com/entry/y0usef-1,624/ 网络模式:桥接 目标:user.txt和root.tx ...