我需要执行一个程序,该程序位于执行程序的python脚本位置之外的另一个目录中。 例如,如果我的python脚本位于/ home / Desktop并且我的程序'Upgrade'位于/ home / bin中,我将如何使用python脚本执行它?我这样试过:
import subporcess
subprocess.call('cd /home/bin')
subprocess.call('./Upgrade')
但问题是使用subprocess.call('cd / home / bin')实际上并未更改目录。
我该如何解决这个问题?
答案 0 :(得分:2)
子进程模块支持为子进程设置当前工作目录fx:
subprocess.call("./Upgrade", cwd="/home/bin")
如果您不关心子流程的当前工作目录,您当然可以提供可执行文件的完全限定名称:
subprocess.call("/home/bin/Upgrade")
您可能还想使用subprocess.check_call
函数(如果您希望在子进程未返回零返回代码时引发异常)。
您的解决方案的问题在于您启动了一个子进程,您尝试执行“cd / home / bin”然后启动另一个子进程,您尝试执行“./Upgrade” - 当前工作目录以后不受前者目录更改的影响。
请注意,为call
方法提供shell有一些缺点(也有优点)。缺点(或优点)是你将获得各种shell扩展(通配符等)。一个缺点可能是shell可能会根据您的平台不同地解释命令。
答案 1 :(得分:1)
您可以使用操作系统更改目录。 python脚本将保留在它创建的文件夹中,但将根据新目录运行进程。
import os
os.chdir()
os.chdir('filepath')
答案 2 :(得分:1)
另一种方法是加入两个命令。
Page_Load
这样您就不需要更改脚本运行目录了。
答案 3 :(得分:0)
尝试
import os
os.system('python /home/bin/Upgrade')
如果您的计划不是.py
,那么只需
os.system('/home/bin/Upgrade')
或
os.system('cd /home/bin|./Upgrade')
答案 4 :(得分:0)
或者您可以查看python相对导入,具体取决于它的作用以及如何在Update dir中构建脚本