[Python] python subprocess.run with working directory changed by cwd is not working

Discussão em 'Python' iniciado por Stack, Janeiro 30, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to use python subprocess to call an exe. The application usually takes the parameter file from the same directory as exe. However, as the python file is not located at the same directory as exe, the exe cannot find the parameter file when called by subprocess.run. Hence I specified the cwd when calling subprocess.run like below:

    subprocess.run([cwd_exe, "--cal-cn-bv", cwd_cif, "Cs1"], cwd=r'd:\Study\softBV_mix\GitHub\projects\Coord\bin', capture_output=True)


    However the subprocess still cannot find the dat file in


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

    The error message appears as


    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'Warning: unable to find d:\Study\softBV_mix\GitHub\projects\Coord\database_unitary.dat
    ​

    where the database_unitary.dat is supposed to be in .../coord/bin/. The application works well if I call it from powershell or command prompt.

    Continue reading...

Compartilhe esta Página