我正在编写一个python脚本来为CVS存储库添加一些功能。我尝试使用subprocess.Popen模块通过windows命令行运行cvs checkout,例如。
subprocess.Popen('cvs -Q co -r %tag% %directory%')
其中标记和目录只是占位符(脚本为它们提供用户输入)。我有CVSROOT设置,但无论出于何种原因,我都无法获得脚本来检查所需的cvs模块。直接在命令行中运行相同的命令(在引号内)按预期工作,检查目录。
答案 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])
代替。