使用Python脚本执行SVN命令

使用Python脚本执行SVN命令,python,python-2.7,svn,Python,Python 2.7,Svn,我想使用Python执行以下SVN命令: svn log-v--xml--stop on copy--no auth cache--trust server cert--non interactive--username--password 我试过这样做: cmd = 'svn log -v --xml --stop-on-copy --no-auth-cache --trust-server-cert --non-interactive --username <user> --pa

我想使用Python执行以下SVN命令:

svn log-v--xml--stop on copy--no auth cache--trust server cert--non interactive--username--password

我试过这样做:

cmd = 'svn log -v --xml --stop-on-copy --no-auth-cache --trust-server-cert --non-interactive --username <user> --password <password> <repo>'
args = shlex.split(cmd)
pro = subprocess.Popen(
    args,
    shell=True,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE)
output, err = pro.communicate()
cmd='svn log-v--xml--stop on copy--no auth cache--trust server cert--non interactive--username--password'
args=shlex.split(cmd)
pro=子进程.Popen(
args,
shell=True,
stdout=子流程.PIPE,
stderr=子流程(管道)
输出,err=pro.communicate()
如果执行SVN,它将返回一个XML。 如果执行Python,则输出和err为空


有什么想法吗?

您是否尝试自己构建args列表
Popen
可能会使用
shlex.split
的顺序,因为
log
可能需要作为主命令(
svn log
)的一部分,而不是作为参数。此外,
shlex.split()
在这里不是真的必要,
cmd.split()
就足够了。@RafaelAguilar,我尝试过,但运气不好。@LucasBeier返回值是多少,
streams=pro.communicate()
ret\u code=pro.returncode
试试这个,然后打印返回值。