Python编写过多

时间:2017-06-28 15:05:41

标签: python file

我已经浏览了网络,无法找到答案,对不起,如果我错过了。

我试图简单地替换文件中的某些行,使用此修改后的文件执行某些操作,然后将其重写为其原始状态。所以我保留了基本文件的副本,修改了我需要做的事情,然后将基本文件重写为修改过的文件。

这是我的代码:

lines = open('fileToModify').readlines()
for i, line in enumerate(lines[:]):
    if "STRING" in line:
        lines[i] = line.replace("STRING", sys.argv[1])
    if "STRING2" in line:
        lines[i] = line.replace("STRING2", sys.argv[2])
pfile = open("fileToModify", "r+")
pfile.seek(0)
pfile.writelines(lines)
pfile.seek(0)
baseLines = open("baseFile").readlines()
pfile.writelines(baseLines)
pfile.close()

问题在于,当我将基本文件重写为修改后的文件时,基本文件的最后2个字符将被复制到修改后的文件的新行中。我不知道自己做错了什么,这对我来说真的很奇怪......

此外,如果有更好的方法来达到这个目的,我可以提出任何建议。

提前感谢!

1 个答案:

答案 0 :(得分:1)

from shutil import copy

s1, r1 = "STRING", sys.argv[1]
s2, r2 = "STRING2", sys.argv[2]

with open("orig_file") as in_f, open("new_file", "w") as out_f:
    for line in in_f:
        out_f.write(line.replace(s1, r1).replace(s2, r2))

copy("new_file", "orig_file")