我有這個代碼,我需要運行一個子進程,並在命令窗口中輸出whats的輸出。子進程無法正常工作
import subprocess
msprompt = 'C:\Windows\Microsoft.NET\Framework64\\v4.0.30319\\MSBuild.exe'
path = "C:/Users/bgb/Documents/Brent/Code/Visual Studio/tree.DataManagement.UnitTests./tree.DataManagement.UnitTests.vbproj"
def command(msprompt, openFile):
for line in finalPathList:
p = subprocess.Popen([msprompt, path], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
print line,
retval = p.wait()
當我在編譯器中運行這個它不工作,就吐出了這條消息:
MSBUILD : error MSB1009: Project file does not exist.
Switch: "C:/Users/bgb/Documents/Brent/Code/Visual Studio/tree.FormControls.UnitTests./tree.FormControls.UnitTests.vbproj"
但是,如果我完全打開命令窗口單獨的,我複製過來粘貼msprompt
然後我複製path
並將其粘貼到命令窗口中,並按回車,它完美的作品,有沒有人知道我在我的command
功能搞亂?
非常感謝幫助!
嗯,這裏有一些東西讓我覺得這實際上不是你的代碼('openFile','finalPathList' ...),但是我首先嚐試標準化你的路徑結構。你在Windows上,所以你應該在路徑文字中使用反斜槓,如果你沒有在'os'庫中傳遞任何東西,並且一直逃脫它們。 –
最好使用原始字符串r'string \ with \ backspace',因爲您不必轉義路徑分隔符。 –
@ThomasFenzl或者那個。儘管我發現在更大的程序中使用原始字符串可能會引起混淆,因爲您幾乎總是不得不同時處理兩者。 –