正在执行位于 Python 中另一个目录中的程序
Executing a program located in another directory in Python
我需要执行位于另一个目录中的程序,而不是执行程序的 python 脚本的位置。
例如,如果我的 python 脚本位于 /home/Desktop 而我的程序 'Upgrade' 位于 /home/bin,我将如何使用 python 脚本执行它?我这样试过:
import subporcess
subprocess.call('cd /home/bin')
subprocess.call('./Upgrade')
但问题是使用 subprocess.call('cd /home/bin').
实际上并没有改变目录
我该如何解决这个问题?
您可以使用 os 更改目录。 python 脚本将保留在其创建的文件夹中,但 运行 将根据新目录进行处理。
import os
os.chdir()
os.chdir('filepath')
尝试
import os
os.system('python /home/bin/Upgrade')
如果你的程序不是.py
,那么就
os.system('/home/bin/Upgrade')
或
os.system('cd /home/bin|./Upgrade')
或者您可以查看 python 相对导入,具体取决于它的作用以及如何在更新目录中构建您的脚本
另一种方法是加入这两个命令。
import subprocess
subprocess.call('cd /home/bin; ./Upgrade', shell=True)
这样您就不需要更改脚本 运行 目录。
子进程模块支持为子进程设置当前工作目录,fx:
subprocess.call("./Upgrade", cwd="/home/bin")
如果您不关心子进程的当前工作目录,您当然可以提供可执行文件的完全限定名称:
subprocess.call("/home/bin/Upgrade")
您可能还想使用 subprocess.check_call
函数(如果您想在子进程没有 return 零 return 代码时引发异常)。
您的解决方案的问题在于,您启动了一个子进程,您尝试在其中执行 "cd /home/bin",然后启动另一个子进程,您在其中尝试执行“./Upgrade” - 当前工作目录后面不受前面目录变化的影响
请注意,向 call
方法提供 shell 有一些缺点(也有优点)。缺点(或优点)是您将获得各种 shell 扩展(通配符等)。一个缺点可能是 shell 可能会根据您的平台以不同方式解释命令。
我需要执行位于另一个目录中的程序,而不是执行程序的 python 脚本的位置。 例如,如果我的 python 脚本位于 /home/Desktop 而我的程序 'Upgrade' 位于 /home/bin,我将如何使用 python 脚本执行它?我这样试过:
import subporcess
subprocess.call('cd /home/bin')
subprocess.call('./Upgrade')
但问题是使用 subprocess.call('cd /home/bin').
实际上并没有改变目录我该如何解决这个问题?
您可以使用 os 更改目录。 python 脚本将保留在其创建的文件夹中,但 运行 将根据新目录进行处理。
import os
os.chdir()
os.chdir('filepath')
尝试
import os
os.system('python /home/bin/Upgrade')
如果你的程序不是.py
,那么就
os.system('/home/bin/Upgrade')
或
os.system('cd /home/bin|./Upgrade')
或者您可以查看 python 相对导入,具体取决于它的作用以及如何在更新目录中构建您的脚本
另一种方法是加入这两个命令。
import subprocess
subprocess.call('cd /home/bin; ./Upgrade', shell=True)
这样您就不需要更改脚本 运行 目录。
子进程模块支持为子进程设置当前工作目录,fx:
subprocess.call("./Upgrade", cwd="/home/bin")
如果您不关心子进程的当前工作目录,您当然可以提供可执行文件的完全限定名称:
subprocess.call("/home/bin/Upgrade")
您可能还想使用 subprocess.check_call
函数(如果您想在子进程没有 return 零 return 代码时引发异常)。
您的解决方案的问题在于,您启动了一个子进程,您尝试在其中执行 "cd /home/bin",然后启动另一个子进程,您在其中尝试执行“./Upgrade” - 当前工作目录后面不受前面目录变化的影响
请注意,向 call
方法提供 shell 有一些缺点(也有优点)。缺点(或优点)是您将获得各种 shell 扩展(通配符等)。一个缺点可能是 shell 可能会根据您的平台以不同方式解释命令。