python 带参数的子进程打开
python subprocess popen with arguments
我正在为 svn 编写预提交挂钩,我必须 运行“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 日志”放在一起:
['/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.
发现问题:
就是-t选项中的space:
'-t '
应该是
'-t'
我正在为 svn 编写预提交挂钩,我必须 运行“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 日志”放在一起:
['/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.
发现问题:
就是-t选项中的space:
'-t '
应该是
'-t'