命令行启动程序的问题

最近开发PM遇到一个需求,需要通过命令行打开第三方程序,因为某些缘故,这里我称呼它为w

然而,一开始我想的挺简单,直接一句subproces.Popen('C:\software\w.exe')代码运行,结果离谱的是无论怎么运行,这个软件就是无法读取我预设的配置文件。更加离谱的是,经过多次测试发现只有通过双击运行就没有问题,一旦用命令行方式运行就是无法读取,包括使用os.system()start命令等

就在不知所措的时候,开发成员无意间发现这个现象:如果是在桌面上运行start命令,而如果配置文件也在桌面上,就能读取了,反而与程序在一起的配置文件读取不到。发现这个现象后,就编写了下面的一段代码:

Python
import os
import subprocess

os.chdir(r'C:\software')
subprocess.Popen('C:\software\w.exe')
经过实测,将工作目录切换到程序所在的目录后再执行就没有问题了。1

我不由得猜测这个w程序在设计的时候是不是就有问题?难道它就不能自己判断一下自己哪一个目录,然后读取该目录的配置文件么?


  1. 还有一种方案,就是在subproces.Popen()加入一个参数cwd,然后写上程序的工作目录就可以了