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一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...
随机推荐
- map最最最基本用法
map<a,b>c中,a,b是变量类型 参数定义的map的名字 #include<stdio.h> #include<map> //头文件 map<int,c ...
- Leetcode(105)-从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15, ...
- Leetcode(35)-搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 这个题目很简单,因为它是给定的排序数组而且没有重 ...
- sqli-libs(4) 双引号报错
经测试,发现单引号不报错,而双引号却报错了 通过查看源码,发现下图中红色的箭头,如果不知道是什么意思,我们可以复制出来看看是什么含义: <?php$id=1;$id='"' .$id. ...
- markdown & git diff
markdown & git diff "dependencies": { "core-js": "3.6.5", "el ...
- css break-inside
css break-inside The break-inside CSS property sets how page, column, or region breaks should behave ...
- How to unblock GitHub DMCA takedown repo
How to unblock GitHub DMCA takedown repo 如何解封 GitHub DMCA takedown 的仓库 support@github.com 发件人: GitHu ...
- BattleBots
BattleBots 搏茨大战 https://battlebots.com/ BiteForce https://www.youtube.com/watch?v=06lyUXuQT_Y xgqfrm ...
- windwos创建和删除服务
创建 >sc create <service name> type=kernel binpath="C:\hsys.sys" 删除 win+r 输出 regedi ...
- redis源码之SDS
1:SDS介绍 我们在redis中执行命令 set key name 的时候,key和name都是字符串类型,而且字符串(string)在redis中是会经常用到的类型,那redis是如何保存字符串的 ...