将“echo t |`作为arg传入`subprocess.check_输出`

2024-09-27 00:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手。我被下面的问题所困扰。在

我用调用了一个exesubprocess.check_输出从我的python脚本。在

res = subprocess.check_output(["svn.exe", "list", "Https://127.0.0.1:443/svn/Repos"], stderr=subprocess.STDOUT)

当脚本在命令提示符下执行时,我会收到一条提示消息,提示输入一个输入

^{pr2}$

但是当我从批处理文件执行脚本时,我不会收到此消息,并且默认情况下调用check_output失败。
有没有办法在调用subprocess.check_output时传递输入,以便批量运行脚本。

嗨,我正在更新我的问题: 我试着用下面的命令从命令提示符运行svn

echo t | svn.exe list Https://127.0.0.1:443/svn/Repos

我得到的输出没有任何用户输入。在

但是我不能在subprocess.check_output中传递echo t |。 有办法吗?在

请帮我解决这个问题。 谢谢


Tags: httpsecho脚本消息outputchecksvnexe
3条回答

我找到了两个解决问题的办法

1.从这个链接找到这个源http://desipenguin.com/techblog/2009/01/13/fun-with-python-subprocessstdin/

proc = subprocess.Popen((["svn.exe", "list", "Https://127.0.0.1:443/svn/Repos"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
print proc.communicate(‘t\n’)[0]

这解决了向进程提供键输入“t”的问题。但我看不懂输出。所以,我遵循了第二种解决方案。在

2.使用两个子流程:

^{pr2}$

这里,过程1的输出作为过程2的输入。{cd1>等于^。在

谢谢。在

我想这不是标题中问题的答案,但是您是否尝试过用 non-interactive trust-server-cert运行{}?这不是你想要的吗?在

在我看来,你收到的消息与证书有关。因此,与其增加向命令传递输入的复杂性,不如解决证书问题或将the ^{} flag传递给SVN命令。在

res = subprocess.check_output(["svn.exe", " trust-server-cert", "list", "url"], stderr=subprocess.STDOUT)

相关问题 更多 >

    热门问题