【问题标题】:python subprocess popen with argumentspython子进程popen带参数
【发布时间】:2015-09-04 10:23:26
【问题描述】:

我正在为 svn 编写一个 precommit 钩子,我必须运行“svnlook log”命令,捕获并解析它的输出。

我被困在这一点上:

svnlookCmd = ['/appl/atlad00/CollabNetSubversionEdge-5.0.1/csvn/bin/svnlook', 'log', repoPath, '-t ', transID]
sys.stderr.write('svnlookCom = ' + str(svnlookCmd) + '\n')
svnlook = Popen(svnlookCmd, stdout=PIPE)
commitMsg = svnlook.stdout.read()
sys.stderr.write ("\n commit message is: : \n" + commitMsg + "\n")

这将运行 svnlook 但抱怨 svnlook 本身会抱怨 "Too many arguments given" 如果你查看 svnlook 帮助,这不是真的。

所以我想我必须像这样把“svnlook log”放在一起:

['/appl/atlad00/CollabNetSubversionEdge-5.0.1/csvn/bin/svnlook log', repoPath, '-t ', transID]

但这不会运行 svn 看看所有给我的:

"OSError: [Errno 2] No such file or directory".

这是有道理的:

'/appl/atlad00/CollabNetSubversionEdge-5.0.1/csvn/bin/svnlook log' does not exists.

知道我在这里缺少什么吗?值得一提的是,自从我使用 python 以来已经很长时间了,所以我可能会遗漏一些非常基本的东西......

S.

【问题讨论】:

    标签: python svn pre-commit subversion-edge


    【解决方案1】:

    发现问题:

    这是 -t 选项中的空格:

    '-t '
    

    应该是

     '-t'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-05
      • 2014-09-15
      • 1970-01-01
      • 2018-06-12
      • 2018-07-30
      • 2012-03-03
      • 2011-08-05
      • 2017-02-03
      相关资源
      最近更新 更多