from subprocess import call
import sys
import os
import subprocess
if(call("hg clone --insecure https://mixmaster.netwitness.local/" + "sys.argv[1]", shell=True)):
sys.stdin = sys.argv[2]
sys.stdin = sys.argv[3]
else :
print("error")
问问题
202 次
2 回答
0
这个论点用引号引起来是有原因的吗?还可以使用 % 替换字符串中的标记。将其更改为:
if(call("hg clone --insecure https://mixmaster.netwitness.local/%s" % sys.argv[1], shell=True)):
编辑
如果要传递由空格分隔的所有参数,请使用此
if(call("hg clone --insecure https://mixmaster.netwitness.local/%s" % (" ".join(sys.argv[1:])), shell=True)):
于 2012-08-09T09:55:51.527 回答
0
使用参数列表更容易调用subprocess.call 。这样您就不必担心要提供给的参数中的空格hg
。正如您在对@Rajesh 答案的评论中指出的那样,您希望将 3 个参数传递给hg
,以下应该有效:
from subprocess import call
import sys
import os
import subprocess
cmd = ["hg", "clone", "--insecure", "https://mixmaster.netwitness.local/", sys.argv[1], sys.argv[2], sys.argv[3]]
if not (call(cmd, shell=True)):
print("error")
如果您真的想提供 sys.argv[2] 和 sys.argv[3] 作为hg
提示的输入。你不应该使用call
它,因为它会阻塞hg
进程,使用Popen
.
于 2013-03-22T20:53:07.097 回答