使用subprocess.Popen和CVS存储库?

时间:2014-06-12 14:00:31

标签: python shell subprocess cvs

我正在编写一个python脚本来为CVS存储库添加一些功能。我尝试使用subprocess.Popen模块通过windows命令行运行cvs checkout,例如。

subprocess.Popen('cvs -Q co -r %tag% %directory%')

其中标记和目录只是占位符(脚本为它们提供用户输入)。我有CVSROOT设置,但无论出于何种原因,我都无法获得脚本来检查所需的cvs模块。直接在命令行中运行相同的命令(在引号内)按预期工作,检查目录。

2 个答案:

答案 0 :(得分:2)

参数不作为字符串传递给subprocess.Popen。您需要在列表中传递命令和参数

subprocess.Popen(['cvs', '-Q', 'co', '-r', '%tag%', '%directory%'])

或者

subprocess.Popen(shelex.split('cvs -Q co -r %tag% %directory%'))

答案 1 :(得分:1)

好吧,如果你想要与shell中相同的行为,你应该这样说:

subprocess.Popen('cvs -Q co -r %tag% %directory%', shell=True)

但通常最好做

subprocess.Popen(['cvs', '-Q', 'co', '-r', tag, directory])

代替。