如何从Python执行VS2008命令并获取其输出?

时间:2010-02-13 15:41:06

标签: python visual-studio-2008 shellexecute

我想跑

tf changeset 12345

使用Visual Studio 2008命令工具。它位于:"c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\",启动的命令为:%comspec% /k ""c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86

我想以某种方式将“tf changeset 12345”附加到它并将其保存为字符串而不首先将其重定向到文件。我注意到,当我只是从命令行调用它时,我在键入时得到GUI:

tf changeset 12345

我在做的时候得到了文字输出:

tf changeset 12345 > out.txt

我不想在文件系统上创建文件,但希望只是以“Pythonic方式”读取它。

我已经看过os.system(),subprocess的简短例子,但它们似乎都没有说明如何做我想做的事情:

  1. 从特定目录运行该进程(最好不使用chdir)
  2. 执行包含环境变量+自定义文本的命令。
  3. 重定向输出而不创建临时文件。
  4. 希望你能帮助我接近我想要的东西。如果您在VS2008或其他Windows程序上测试该解决方案,将会有所帮助。

    谢谢!

2 个答案:

答案 0 :(得分:3)

process = subprocess.Popen(['tf', 'changeset', '12345'], cwd='c:/somedir', env={'SOMEENVVAR': 'SOMEVALUE', ...}, stdout=subprocess.PIPE)

for line in process.stdout:
  print line

process.terminate()

答案 1 :(得分:2)

看一下我使用here来完成您正在寻找的工作的代码。这是用C#编写的,并且是一个灵活的类,您只需要更改命令,查看ps.FileNameps.Arguments,命令的输出将被重定向到StringBuilder实例如果需要解析。窗口中的shell执行命令是完全隐藏的,不会显示。

希望这有帮助, 最好的祝福, 汤姆。