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

2024-06-16 11:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

我该怎么解决?


Tags: import程序目录脚本homebincdcall
3条回答

另一种选择是连接这两个命令。

import subprocess
subprocess.call('cd /home/bin; ./Upgrade', shell=True)

这样就不需要更改脚本运行目录。

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

import os

os.chdir()
os.chdir('filepath')

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

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

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

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

您可能还想使用subprocess.check_call函数(如果您想在子进程不返回零返回代码时引发异常)。

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

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

相关问题 更多 >