import fileinput
import sys
def replaceAll(file,searchExp,replaceExp):
i=1
for line in fileinput.input(file, inplace=1):
if i==57:
if searchExp in line:
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)
i+=1
replaceAll("5MW_Platform_karbarge.DAT","22.0","23.0")
此代码正在运行,问题是执行后文件中的其余行都丢失了。任何人都可以建议修改,除了第57行,文件的其余部分不受干扰?非常感谢。
答案 0 :(得分:1)
你的问题是你只需将第57行写回文件,只需从if i==57
中移出sys.stdout.write,这样每一行都会写入,但只有57行被替换。
这应该有效
import fileinput
import sys
def replaceAll(file,searchExp,replaceExp):
i=1
for line in fileinput.input(file, inplace=1):
if i==57:
if searchExp in line:
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)
i+=1
replaceAll("5MW_Platform_karbarge.DAT","22.0","23.0")