Pythonsubprocess.lun与CWD更改的工作目录不起作用

问题描述 投票:0回答:2
exe

。该应用程序通常从与EXE同一目录中获取参数文件。但是,由于Python文件与EXE的目录不在同一目录中,因此EXE在由SubProcess.run调用时找不到参数文件。因此,我在调用subprocess.run时指定了cwd,如下: subprocess.run([cwd_exe, "--cal-cn-bv", cwd_cif, "Cs1"], cwd=r'd:\Study\softBV_mix\GitHub\projects\Coord\bin', capture_output=True) 无论子过程仍然找不到dat文件in

D:\ study \ softbv_mix \ github \ projects \ coordin

错误消息显示为

completedProcess(args = ['d:\ soade \ softbv_mix \ github \ project \ project \ coord in/softbv0405.exe', ' - cal-cn-bv', 'd:\ study \ softbv_mix \ github \ project \ coord est/cscl.cif', 'cs1'],returnCode = 0,stdout = b'warning:找不到 D:\ study \ softbv_mix \ github \ projects \ coord \database_unitary.dat

database_unitary.dat应该在.../coord/bin/的地方。如果我从powershell或命令提示下调用它,则该应用程序效果很好。

没有一个人回答了我的问题,但是我自己找到了解决方法,尽管我确定是否正确识别了根部原因。

最终我导入OS并确保CWD是公认的绝对地址

python subprocess exe cwd
2个回答
3
投票
Importos

cwd= os.path.abspath(“ ../ bin”)

this练习
,所以表达式

r'd:\ study \ softbv_mix \ github \ project \ project \ coordin'

造成问题。希望有些专业人士可以进一步澄清这一点。

cwd
仅与

, shell=True

一起工作,例如:

subprocess.Popen(command, cwd=path_to_work_dir, shell=True)


0
投票

CWD:在执行孩子之前设置当前目录。

使用完整的路径或
cwd
。不要同时做

	

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.