我有一个名为Test的C ++ Visual Studio程序,它接受两个参数。我必须使用大量不同的参数运行此程序,如:
如果我提供一组参数,如何创建一个多次运行该程序的python脚本? (而不是我多次运行上述命令)。
溶液: 这是我使用的代码:
for commands in listargs:
cmd = ["../../Test.exe", commands[0], commands[1]]
result = subprocess.Popen(cmd, stdout=subprocess.PIPE)
stdin, stderr = result.communicate()
print stdin
我在2个成员元组(listargs)的列表中给出了参数。每个元组都有一个执行的参数。或者如提到的 abernet ,我们可以在csv文件中给出参数。谢谢你的帮助。
答案 0 :(得分:1)
您尚未解释如何“提供一组参数”。
假设您要创建一个CSV文件,如下所示:
a,b
c,d
在文本编辑器中创建很简单,或者甚至可以在Excel中创建。
Python在标准库中有一个csv
模块,它知道如何准确读取该格式,将每一行转换为值列表。
它有一个subprocess
模块,知道如何运行带有参数列表的程序。
所以,例如:
with open('args.csv') as f:
for args in csv.reader(f):
subprocess.call(['./test'] + args)
如果你想将每次运行的输出存储在一个文件中,或检查输出并引发错误等异常,你几乎可以用subprocess
做任何事情,你只需阅读文档。
答案 1 :(得分:1)
对于此类内容,您应使用subprocess
,可能subprocess.communicate
:
p = subprocess.Popen(['./test', '-' + a, '-' + b])
p.communicate()
这是一个非常通用的命令,它还允许您重定向输入和输出。请参阅PMOTW。