2008-11-18 27 views
3

我熟悉使用os.system從命令行運行。但是,我希望能夠從特定文件夾內運行jar文件,例如。我的'測試'文件夾。這是因爲我的jar(位於我的'test'文件夾中)需要我的'test'文件夾內有一個文件。那麼,我如何在腳本中編寫一個函數來執行以下操作:c:\test>java -jar run_this.jar required_parameter.ext?我是一個蟒蛇新手,所以非常感謝細節。提前致謝。如何讓我的Python(版本2.5)腳本在文件夾內而不是從命令行運行jar文件?

+0

嘗試提供腳本中不起作用的部分。並非全部,而是一段說明你的問題的代碼。 – 2008-11-18 16:25:00

回答

5

這是一個小腳本,讓你開始。有辦法讓它「更好」,但不知道你正在努力完成的全部範圍應該是足夠的。

import os 

if __name__ == "__main__": 
    startingDir = os.getcwd() # save our current directory 
    testDir = "\\test" # note that \ is windows specific, and we have to escape it 
    os.chdir(testDir) # change to our test directory 
    os.system("java -jar run_this.jar required_paramter.ext") 
    os.chdir(startingDir) # change back to where we started 
1

一般情況:使用os.chdir更改父進程的目錄,然後使用os.system運行jar文件。如果你需要保持Python的工作目錄穩定,你需要chdir回到原來的工作目錄 - 你需要用os.getcwd()來記錄它。

在Unix上:顯式地使用os.fork創建一個子進程。在父項中,等待os.waitpid的子項。在孩子中,使用os.chdir,然後使用os.exec來運行java。

+0

爲什麼os.system優先於subprocess.Popen? – 2008-11-18 16:50:04

+0

我個人發現,對於初學者來說,子過程API也過載了(即使它允許指定新進程的cwd,使恢復不必要)。 – 2008-11-18 23:52:45

相關問題