如何将命令行参数中的值分配或复制到标准输入???我已编写程序但我无法执行此操作

时间:2012-08-09 09:50:38

标签: python-2.7

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

2 个答案:

答案 0 :(得分: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)): 

答案 1 :(得分: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