2010-02-13 196 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

相關問題