我需要执行一个位于另一个目录中的程序,而不是执行程序的python脚本的位置。
例如,如果我的python脚本位于/home/Desktop中,而我的程序“Upgrade”位于/home/bin中,我将如何使用python脚本执行它?我这样试过:
import subporcess
subprocess.call('cd /home/bin')
subprocess.call('./Upgrade')
但问题是,使用subprocess.call('cd/home/bin')实际上并没有更改目录。
我该怎么解决?
Tags:
另一种选择是连接这两个命令。
这样就不需要更改脚本运行目录。
您可以使用操作系统更改目录。python脚本将保留在其创建的文件夹中,但将基于新目录运行进程。
子流程模块支持设置子流程fx的当前工作目录:
如果不关心子进程的当前工作目录,当然可以提供可执行文件的完全限定名:
您可能还想使用
subprocess.check_call
函数(如果您想在子进程不返回零返回代码时引发异常)。解决方案的问题是,启动一个子进程,在该子进程中尝试执行“cd/home/bin”,然后启动另一个子进程,在该子进程中尝试执行“./Upgrade”-后者的当前工作目录不受前者目录更改的影响。
注意,向
call
方法提供shell有一些缺点(也有一些优点)。缺点(或优点)是您将获得各种shell扩展(通配符等)。一个缺点可能是shell可能会根据您的平台对命令进行不同的解释。相关问题 更多 >
编程相关推荐