2010-02-13 193 views
4

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

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(),子进程的简短的例子,但他们都不来说明如何做我想做的事:

  1. 运行从一个特定目录的过程中(最好不使用chdir)
  2. 执行包含环境变量+自定义文本的命令。
  3. 重定向输出而不创建临时文件。

希望你能帮助我接近我想要的东西。如果您在VS2008或其他Windows程序上测试了解决方案,这将有所帮助。

谢谢!

回答

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() 
+0

让我测试一下。 – 2010-02-18 15:04:17

2

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

希望这会有所帮助, 最好的问候, 汤姆。

+0

谢谢,但Python解决方案也不错。 – 2010-02-15 18:26:40

相关问题