【发布时间】:2019-03-22 19:43:20
【问题描述】:
我有一个文本文件 ("input.param"),它用作包的输入文件。我需要修改一个参数的值。需要更改的行如下:
param1 0.01
model_name run_param1
我需要搜索参数param1并修改0.01的值以获得一系列不同的值,同时model_name也将相应地更改为param1的不同值。例如,如果 para1 更改为 0.03,则 model_name 更改为 'run_param1_p03'。以下是我的一些尝试代码:
import numpy as np
import os
param1_range = np.arange(0.01,0.5,0.01)
with open('input.param', 'r') as file :
filedata = file.read()
for p_value in param1_range:
filedata.replace('param1 0.01', 'param1 ' + str(p_value))
filedata.replace('model_name run_param1', 'model_name run_param1' + '_p0' + str(int(round(p_value*100))))
with open('input.param', 'w') as file:
file.write(filedata)
os.system('./bin/run_app param/input.param')
但是,这不起作用。我猜主要问题是replace 命令无法识别space。但我不知道如何搜索参数param1 或model_name 并更改它们的值。
【问题讨论】:
-
您没有将
replaced 文本分配给任何地方。做filedata = filedata.replace(..)注意:str.replace不做inplace替换 -
你看过正则表达式吗? docs.python.org/3/library/re.html
-
@hansolo 谢谢,这是一个很好的收获。我解决了这个问题并继续努力。
-
@bison 感谢您的建议。我会检查的。