Czy istnieje sposób na określenie działającego katalogu poleceń w Pythonie subprocess.Popen()
?
Na przykład:
Popen('c:\mytool\tool.exe', workingdir='d:\test\local')
Mój skrypt w języku Python znajduje się w C:\programs\python
Czy można uruchomić C:\mytool\tool.exe
w katalogu D:\test\local
?
Jak ustawić katalog roboczy dla podprocesu?
python
subprocess
popen
icn
źródło
źródło
Odpowiedzi:
subprocess.Popen
bierzecwd
argument, aby ustawić bieżący katalog roboczy; będziesz także chciał uciec od ukośników odwrotnych ('d:\\test\\local'
) lub użyć,r'd:\test\local'
aby ukośniki odwrotne nie były interpretowane przez Pythona jako sekwencje specjalne. Sposób, w jaki został napisany,\t
część zostanie przetłumaczona na tab.Twoja nowa linia powinna więc wyglądać następująco:
Aby użyć ścieżki skryptu Python jako cwd
import os
i zdefiniuj cwd za pomocą:źródło
shell=False
, nie możesz użyć wbudowanej powłoki, takiej jakcd
: np. Wypróbuj to w Linuksie z powłoką na dwa sposoby:subprocess.Popen("cd /tmp; pwd")
subprocess.call(["C:/Users/Bob/Some.exe"], cwd="C:/Users/Jane/")
i działa dobrze