Есть ли способ указать действующий каталог команды в Python subprocess.Popen()
?
Например:
Popen('c:\mytool\tool.exe', workingdir='d:\test\local')
Мой скрипт Python находится в C:\programs\python
Возможно ли запустить C:\mytool\tool.exe
в каталоге D:\test\local
?
Как мне установить рабочий каталог для подпроцесса?
Ответы:
subprocess.Popen
принимаетcwd
аргумент для установки текущего рабочего каталога; Вы также захотите избежать обратной косой черты ('d:\\test\\local'
) или использовать ееr'd:\test\local'
так, чтобы обратная косая черта не интерпретировалась Python как escape-последовательность. Как вы это написали,\t
часть будет переведена в tab.Итак, ваша новая строка должна выглядеть так:
Чтобы использовать ваш путь к скрипту Python как cwd,
import os
и определите cwd, используя это:источник
shell=False
, вы не можете использовать встроенную оболочку, такую какcd
: то есть, попробуйте это в Linux с оболочкой двумя способами:subprocess.Popen("cd /tmp; pwd")
subprocess.call(["C:/Users/Bob/Some.exe"], cwd="C:/Users/Jane/")
это сделал, и он отлично работает