||
本文参考自: https://blog.csdn.net/Jerry_1126/article/details/41926407
https://www.runoob.com/python/att-string-rstrip.html
1. 利用fileinput循环读取一个文件所有行
>>> import fileinput >>> for line in fileinput.input('data.txt'): print (line)
import fileinput for line in fileinput.input(): print (fileinput.filename(),'|','Line Number:',fileinput.lineno(),'|: ',line)
2. 利用fileinput对多文件操作,并原地修改内容
#test.py#--- 样本文件-- 1.txt first second 样本文件-- 2.txt third fourth
import fileinput def process(line): return line.rstrip() + ' line' #rstrip:用来去除结尾字符、空白符 for line in fileinput.input(inplace=1): print process(line)执行命令:python test.py 1.txt 2.txt
3. 利用fileinput实现文件内容替换,并将原文件作备份
#样本文件:#data.txt Python Java C/C++Shell #FileName: test.py import fileinput for line in fileinput.input('data.txt',backup='.bak',inplace=1): print line.rstrip().replace('Python','Perl') #或者print line.replace('Python','Perl'), #最后结果: #data.txt Perl Java C/C++Shell #并生成: #data.txt.bak文件
4. 利用fileinput对文件简单处理
#FileName: test.py #data.txt Perl Java C/C++ import sys import fileinput for line in fileinput.input(r'C:data.txt'): sys.stdout.write('=> ') print(obj) 其实等价于sys.stdout.write(obj+\n) sys.stdout.write(line) #输出结果 => Perl => Java => C/C++
5. 利用fileinput批处理文件
#---测试文件: test1.txt test2.txt #---脚本文件: test.py import fileinput import glob #glob模块可以使用Unix shell风格的通配符匹配符合特定格式的文件和文件夹 for line in fileinput.input(glob.glob(test*.txt)): if fileinput.isfirstline(): #返回当前读取的行在其文件中是否为第一行 print '-'*20, 'Reading %s...' % fileinput.filename(), '-'*20 print str(fileinput.lineno()) + ': ' + line.upper() #将line的内容从小写转化为大写 #upper() 方法将字符串中的小写字母转为大写字母 #用法:str.upper() #---输出结果:>>> -------------------- Reading test1.txt... -------------------- 1: AAAAA 2: BBBBB -------------------- Reading test2.txt... -------------------- 3: FIRST LINE 4: SECOND LINE
6. 利用fileinput及re做日志分析: 提取所有含日期的行
#--样本文件-- aaa 1970-01-01 13:45:30 Error: **** Due to System Disk spacke not enough... bbb 1970-01-02 10:20:30 Error: **** Due to System Out of Memory... ccc #---测试脚本--- import re import fileinput import sys pattern = '\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}' for line in fileinput.input('error.log',backup='.bak',inplace=1): if re.search(pattern,line): sys.stdout.write('=>') sys.stdout.write(line) #---测试结果--- => 1970-01-01 13:45:30 Error: **** Due to System Disk spacke not enough... => 1970-01-02 10:20:30 Error: **** Due to System Out of Memory...
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-4-27 04:23
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社