使用不同参数

时间:2015-05-26 22:57:56

标签: python visual-studio

我有一个名为Test的C ++ Visual Studio程序,它接受两个参数。我必须使用大量不同的参数运行此程序,如:

  • ./ test -a -b(a是arg1,b是arg2)
  • ./ test -c -d

如果我提供一组参数,如何创建一个多次运行该程序的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文件中给出参数。谢谢你的帮助。

2 个答案:

答案 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