Gibt es eine Möglichkeit, das laufende Befehlsverzeichnis in Pythons anzugeben subprocess.Popen()
?
Beispielsweise:
Popen('c:\mytool\tool.exe', workingdir='d:\test\local')
Mein Python-Skript befindet sich in C:\programs\python
Ist es möglich, C:\mytool\tool.exe
im Verzeichnis auszuführen D:\test\local
?
Wie lege ich das Arbeitsverzeichnis für einen Unterprozess fest?
python
subprocess
popen
icn
quelle
quelle
Antworten:
subprocess.Popen
nimmt eincwd
Argument , um das aktuelle Arbeitsverzeichnis festzulegen; Sie möchten auch Ihre Backslashes ('d:\\test\\local'
) maskieren oder verwenden,r'd:\test\local'
damit die Backslashes von Python nicht als Escape-Sequenzen interpretiert werden. So wie Sie es geschrieben haben, wird der\t
Teil in a übersetzt tab.Ihre neue Zeile sollte also folgendermaßen aussehen:
So verwenden Sie Ihren Python-Skriptpfad als cwd
import os
und definieren cwd folgendermaßen:quelle
shell=False
können Sie keine eingebaute Shell verwenden, wie zum Beispielcd
: Versuchen Sie dies unter Linux mit Shell in beide Richtungen:subprocess.Popen("cd /tmp; pwd")
subprocess.call(["C:/Users/Bob/Some.exe"], cwd="C:/Users/Jane/")
und es funktioniert