修改。默认为False,设置为False跟文件的open区别不大
3)mode 读取的格式
官方:FileInput opening mode must be one of 'r', 'rU', 'U' and 'rb' (b:二进制字节模式和U:unicode模式)
4)backup 文件备份,为原本的文件做一份备份,不作任何修改,其实就是复制。备份的文件名是原本的文件名+备份文件名。注意备份文件需要把文件的格式也写进去。一般backup需要与参数inplace一起使用才有意义。而在设置了inplace=True,一般同时会设置backup参数来备份原本的文件内容。
例子:在每一行文本的前面添加 ‘#行号’字样
单个文件案例:
for line in fileinput.input('file.txt',inplace=True,mode='r',backup='file_back.txt'):
num = fileinput.filelineno()
print('#%s'%num+' '+line)
如果inplace设置为True,即就地修改,必须要有print函数将读取的数据重新写回当前的文件中,否则文件的数据最后会变成空。所以使用inplace时候必须很小心。
备份后的文件目录
多个文件案例
for line in fileinput.input(files=['file.txt','file1.txt'],inplace=True,mode='r',backup='file_back.txt'):
num = fileinput.filelineno()
print('#%s'%num+' '+line
通常fileinput模块会结合re模块一起使用,例如在对日志的分析中会很有用
例如,这里有一个monoodb的log文件内容
希望获取日期为11-13的日志
import fileinput
import re
for line in fileinput.input('mongolog.txt',mode='r',inplace=True,backup='log_backup.txt'):
pattern = '2018-11-13'
if re.search(pattern,line):
print(line)
获取结果在原log.txt文件中,备份文件中的内容与原文件相同