0
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")
4

2 回答 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 回答