Как я могу указать рабочий каталог для popen

Есть ли способ указать действующий каталог команды в Python subprocess.Popen()?

Например:

Popen('c:\mytool\tool.exe', workingdir='d:\test\local')

Мой скрипт Python находится в C:\programs\python

Возможно ли запустить C:\mytool\tool.exe в каталоге D:\test\local?

Как мне установить рабочий каталог для подпроцесса?

Ответ 1

subprocess.Popen принимает аргумент cwd для установки текущего рабочего каталога; вы также захотите избежать обратных косых черт ('d:\\test\\local') или использовать r'd:\test\local', чтобы обратная косая черта не интерпретировалась как escape-последовательности с помощью Python. Как вы его написали, часть \t будет переведена на tab.

Итак, ваша новая строка должна выглядеть так:

subprocess.Popen(r'c:\mytool\tool.exe', cwd=r'd:\test\local')

Чтобы использовать ваш путь Python script как cwd, import os и определить cwd, используя это:

os.path.dirname(os.path.realpath(__file__))