Python - 将字符串转换为命令

时间:2013-09-05 16:54:42

标签: python

我正在创建一个脚本,它将循环运行一组Subprocess,然后等待所有子进程完成。我必须在运行它们之前将变量添加到子进程中,所以我想把它写成一个字符串,然后将字符串转换为命令?这样的事情会存在吗?

例如,我有这些stringss:

"p1 = subprocess.Popen('python','hello.py')"
"p2 = subprocess.Popen('python','hello2.py')"

如何执行它以便稍后在脚本中调用p1或p2? (例如,p1.wait())

2 个答案:

答案 0 :(得分:6)

使用字符串是一个坏主意,我使用列表:

options = [('python','hello.py'), ('python','hello2.py')]
for option in options:
    process = subprocess.Popen(option) 
    #do something here

答案 1 :(得分:0)

exec("p1 = subprocess.Popen('python','hello.py')")

请注意,exec 执行语句,而eval 则表示表达式。

但我同意另一个答案,如果可以,最好以不同的方式做到这一点。你绝对不应该做的一件事是执行你不知道的源的任意字符串,例如,如果它们可能来自用户。