我有一个任务,我必须每次运行一组参数略有不同的模拟。我想写一个Python脚本来自动化这个,但我遇到了问题。
为了简化描述,我基本上从命令行调用N
模拟,每个模拟都有一组不同的参数,我希望脚本逐个执行。想象一下,要运行模拟,我会将execute_simulation...
写入命令行,其中...
代表给定模拟的参数。这就是我的脚本:
from subprocess import call
<code>
for i in range(0, N):
call('execute_simulation_%s' % ( parameters[i]))
但是,我总是在调用脚本时收到错误消息。任何人都可以建议为什么会出现这种情况?
答案 0 :(得分:0)
如果您包含错误消息会很有帮助,但无论如何我都会尽力帮助您。
->save
函数需要一系列字符串而不是单个字符串(尽管227518698 | Rui | G | 2015 | 100
227518699 | Sara | G | 2016 | 100
227518693 | Paulo Pereira | G | 2014 | 43
227518691 | Diogo Batista | G | 2017 | 2
文档声明它们在Windows上转换为字符串,因此它可能在特定情况下工作)。
此外,在您提供的示例代码中,您执行了call
。如果Popen
不是字符串而是列表,则会在该对象上调用元组,生成器或call('execute_simulation_%s' % ( parameters[i]))
,这意味着您可以获得类似parameters[i]
的内容。这可能不是你想要的。您可以在序列上调用str
以获得类似execute_simulation ['arg0', 'arg1', 'arg2', 'arg3', 'arg4']
的内容。
话虽如此,我假设' '.join
列表包含每个调用的参数。然后你可以做
execute_simulation arg0 arg1 arg2 arg3 arg4
另外,请考虑使用parameters
,因为建议在Python 3.5+代码中使用它(它的工作方式与args = [f'arg{i}' for i in range(5)]
parameters = [args for i in range(5)]
for args in parameters:
call(('execute_simulation', *args))
类似)。
我希望这适用于你的情况。