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 行之外,文件的其余部分不受干扰吗?非常感谢。
最佳答案
你的问题是你只将第57行写回到文件中,只需将sys.stdout.write移出if i==57
,这样每一行都会被写入,但只有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")
关于python - 更改特定行中的特定值(例如行号 :57) and saving the file with same file name using python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35886078/