执行位于Python另一个目录中的程序

问题描述 投票:1回答:5

我需要执行一个位于除执行程序的python脚本位置以外的其他目录中的程序。例如,如果我的python脚本位于/ home / Desktop中,而我的程序“ Upgrade”位于/ home / bin中,我将如何使用python脚本执行它?我这样尝试过:

import subporcess
subprocess.call('cd /home/bin')
subprocess.call('./Upgrade')

但是问题是,实际上没有通过使用subprocess.call('cd / home / bin')来更改目录。

我该如何解决?

python subprocess
5个回答
2
投票

子流程模块支持为子流程设置当前工作目录,fx:

subprocess.call("./Upgrade", cwd="/home/bin")

如果您不关心子进程的当前工作目录,那么您当然可以提供可执行文件的完全限定名称:

subprocess.call("/home/bin/Upgrade")

您可能还想使用subprocess.check_call函数(如果您想在子进程未返回零返回码的情况下引发异常,则为该函数。

解决方案的问题是,您启动一​​个子进程并尝试执行“ cd / home / bin”,然后启动另一个子进程,并尝试执行“ ./Upgrade”-后者的当前工作目录不受前者目录更改的影响。

请注意,将外壳提供给call方法有一些缺点(也有优点)。缺点(或优点)是您将获得各种shell扩展(通配符等)。一个缺点可能是shell可能会根据您的平台对命令进行不同的解释。


1
投票

您可以使用os更改目录。 python脚本将保留在其创建的文件夹中,但将基于新目录运行进程。


1
投票

另一种选择是将两个命令结合在一起。


0
投票

或者您可以查看python相对导入,具体取决于它的作用以及如何在更新目录中构建脚本


0
投票

尝试

© www.soinside.com 2019 - 2024. All rights reserved.