cwd更改了工作目录的python subprocess.run不工作



我正在尝试使用python子进程来调用exe。应用程序通常从与exe相同的目录中获取参数文件。但是,由于python文件与exe不在同一目录下,当子进程调用exe时,exe找不到参数文件。运行。因此,我在调用个子进程时指定了cwd

subprocess.run([cwd_exe, "--cal-cn-bv", cwd_cif, "Cs1"], cwd=r'd:StudysoftBV_mixGitHubprojectsCoordbin', capture_output=True)

但是,子流程仍然无法在中找到dat文件

d:\Study\softBV_mix\GitHub\projects\Coord\bin

错误消息显示为

CompletedProcess(args='d:\Study\softBV_mix\GitHub\projects\Coord\bin/softBV0405.exe','--cal cn bv','d:\Study\softBV_mix\GitHub\projects\Coord\test/CsCl.cif','Cs1'],returncode=0,stdout=b'警告:找不到d: \Study\softBV_mix\GitHub\projects\Coord\database_unitary.dat

database_unitary.dat应该在/coord/bin/。如果我从powershell或命令提示符调用该应用程序,它会运行良好。

没有人回答我的问题,但我自己找到了解决方法,尽管我确信我是否正确地确定了根本原因。

最后,我导入了os,并确保cwd是公认的绝对地址

导入

cwd=os.path.abspath("../bin"(

这很成功。

因此表达式

r'd:\Study\softBV_mix\GitHub\projects\Coord\bin'

引起问题。希望一些PRO能够进一步澄清这一点。

相关内容

  • 没有找到相关文章

最新更新