我有一个文件,我需要将某些内容写入一个新文件。
当前内容如下:
send from @1373846594 to pool/10.0.68.61@1374451276 estimated size is 7.83G
send from @1374451276 to pool/10.0.68.61@1375056084 estimated size is 10.0G
我需要显示新文件:
@1373846594 --> pool/10.0.68.61@1374451276 --> 7.83G
@1374451276 --> pool/10.0.68.61@1375056084 --> 10.0G
我试过:
with open("file", "r") as drun:
for _,_,snap,_,pool_,_,_,size in zip(*[iter(drun)]*9):
drun.write("{0}\t{1}\t{2}".format(snap,pool,size))
我知道我要么离得很远,要么就是不那么远,但我不确定下一步该去哪里。任何帮助将不胜感激。
请您参考如下方法:
您想使用 str.split() 来拆分您的行,您需要先写入另一个文件,然后再将其移回原位;读取和写入同一个文件是棘手的,应该避免,除非您使用固定的记录大小。
然而,fileinput module使就地文件编辑变得足够容易:
import fileinput
for line in fileinput.input(filename, inplace=True):
components = line.split()
snap, pool, size = components[2], components[4], components[-1]
print '\t'.join((snap,pool,size))
print 语句写入 sys.stdout,fileinput 在设置 inplace=True 时方便地重定向.这意味着您正在写入输出文件(替换原始输入文件),也在每个循环中写一个额外的换行符。
