我正在處理的java項目有一個.bat
文件和一個.sh
文件,它構建CLASSPATH
以供項目運行。 (其他窗口爲.bat
,其餘爲.sh
)。從Python中獲取.bat文件中構建的CLASSPATH
現在,我正在編寫一個python腳本,它需要訪問由這些腳本創建的類路徑,如果在linux上爲.sh
,而在Windows上爲.bat
。
目前,我這樣做對於Linux:
Popen(['bash', '-c', '. mkcp.sh && echo $CLASSPATH'], stdout=sp.PIPE).communicate()[0].strip()
我想不出一個等效的方式做到這一點在Windows上。到目前爲止,我想出這個
check_output(['cmd', '/c', 'call mkcp.bat && echo %CLASSPATH%'])
但是,把所有的命令在mkcp.bat
文件到標準輸出。 (將@echo off
添加到該文件對我來說不是一種選擇,即我無法修改它)。拋開這個問題,主要的問題是%CLASSPATH%
被替換爲之前批處理文件運行,這不是我想要的。
我想到的另一種方法是,如果我創建一個Popen
對象,並運行批處理文件,如果我可以訪問該進程的環境,我可以得到我想要的。但是從Popen的文檔來看,這看起來不可能。
有關如何實現此目的的任何想法?
這太棒了。我會盡力讓你知道結果。兩者看起來都非常好。你有什麼特別的建議嗎? [我失去了我的互聯網,所以不能早點回來:)]。 – 2011-12-16 14:47:55