svn命令行无法使用Python

时间:2015-09-11 21:06:01

标签: svn

我在cmd.exe(Win 7)上成功运行了以下svn命令:

svn info "svn://azsvn/..some path"

然而,通过Python运行以下代码:

path = 'svn://azsvn/..some path'
cmd_str = 'svn info ' + path
proc = subprocess.Popen(cmd_string, shell=True)
out, err = proc.communicate()

返回空。 我做错了什么?

sedy

2 个答案:

答案 0 :(得分:1)

你只需要将stdout和stderr设置为PIPE,如下所示:

   proc = subprocess.Popen(cmd_string, shell=True,
                           stdout=subprocess.PIPE, stderr= subprocess.PIPE)

通过这种方式,communication()方法将返回预期的元组。

答案 1 :(得分:0)

我想,当你从shell运行命令时,shell正在剥离" pth"并传入shell处理过的命令

 svn info pth

但是当你使用API​​库时,他们试图尽可能地接近你传递给库的参数,所以当它被执行时它会运行像

这样的东西。
 svn info "pth"

在实际的SVN处理器中。这可能存在SVN不知道像"pth"这样的文件并且失败的问题。

我尝试svn info pth的cmd_str,看看我是否达到了预期的效果。此外,您可能会发现在svn info \"pth\"的shell中运行命令可能会以类似于Python启动的方式失败。