fileinput模块:读取,替换文本内容
fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行。它的工作方式和readlines很类似,不同点在于它不是将全部的行读到列表中而是创建了一个xreadlines对象。
功能函数介绍:
1. 遍历文本内容
import fileinput
for eachline in fileinput.input("article.ids.txt"):
print eachline
实现的方式其实跟readlines是一样的!
2. 打印输入的文件名称
import fileinput
for eachline in fileinput.input("article.ids.txt"):
print fileinput.filename()#打印article.ids.txt
3. 打印当前行号与行的内容
importfileinput
foreachline in fileinput.input("article.ids.txt"):
printfileinput.lineno(),eachline
4. 返回是否是第一行
import fileinput
for eachline in fileinput.input("article.ids.txt"):
if fileinput.isfirstline():print eachline;break
5. 文本文件的替换操作很简单.
只需要把 inplace 关键字参数设置为 1 , 传递给 input 函数, 该模块会帮你做好一切. inplace=1:标准输出会被重定向到打开文件;backup=’_bak’,:替换文件内容之前备份后缀以_bak结尾;另外,在调用fileinput.input()之后记得要fileinput.close()。
示例1-使用fileinput模块将 CRLF 改为 LF
importfileinput, sys
for line in fileinput.input(inplace=1):
# convert Windows/DOS text files toUnix files
if line[-2:] == "/r/n":
line = line[:-2] + "/n"
示例2-使用文件先备份为bak,再将Java改为Python
importfileinput
for line infileinput.input('test.txt',backup='_bak',inplace=1):
printline.replace('Java','Python'),
fileinput.close()