在每行的开头插入字符串

phi*_*ndt 9 python string file

如何在文本文件中的每一行的开头插入一个字符串,我有以下代码:

f = open('./ampo.txt', 'r+')
with open('./ampo.txt') as infile:
    for line in infile:
        f.insert(0, 'EDF ')
f.close
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"'file'对象没有'insert'属性"

请注意,我是一个完整的编程n00b.

unu*_*tbu 21

Python附带电池:

import fileinput
import sys

for line in fileinput.input(['./ampo.txt'], inplace=True):
    sys.stdout.write('EDF {l}'.format(l=line))
Run Code Online (Sandbox Code Playgroud)

与已发布的解决方案不同,这也保留了文件权限.

  • `for-loop`一次一行地遍历`ampo.txt`中的行.`sys.stdout.write`几乎与`print`相同.我选择使用`sys.stdout.write`而不是`print`的原因是因为`print`添加了额外的换行符,而`sys.stdout.write`却没有.由于`inplace = True`参数,`fileinput`将原始的ampo.txt移动到一个临时文件,然后将stdout重定向到一个名为`ampo.txt`的新文件.然后它复制权限并删除临时文件.还有更多选项,比如保留备份文件; 有关详细信息,请参阅文档. (4认同)
  • _"这也保留了文件权限"_我不知道.+1 (2认同)

Dav*_*nan 7

您无法像这样修改文件.文件不支持插入.你必须全部阅读,然后再写出来.

如果您愿意,可以逐行执行此操作.但在这种情况下,您需要写入临时文件,然后替换原始文件.因此,对于足够小的文件,这样做更简单:

with open('./ampo.txt', 'r') as f:
    lines = f.readlines()
lines = ['EDF '+line for line in lines]
with open('./ampo.txt', 'w') as f:
    f.writelines(lines)
Run Code Online (Sandbox Code Playgroud)