Skip to main content
 首页 » 编程设计

python之在python中将某些内容从一个文件写入另一个文件

2025年05月04日7zhwl

我有一个文件,我需要将某些内容写入一个新文件。

当前内容如下:

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 时方便地重定向.这意味着您正在写入输出文件(替换原始输入文件),也在每个循环中写一个额外的换行符。