2008-11-18 24 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

相关问题