Heim > Artikel > Backend-Entwicklung > Wie führe ich Skripte in Unterverzeichnissen oder Superverzeichnissen mit Subprocess aus?
Wenn Sie versuchen, ein Skript innerhalb eines Unterverzeichnisses oder Superverzeichnisses mithilfe eines Unterprozesses auszuführen, kann die Fehlermeldung „OSerror: [Errno 2] No Eine solche Datei oder ein solches Verzeichnis.“
Dieses Problem tritt auf, weil der betreffende Code das Programm „cd“ aufruft, bei dem es sich um ein Shell-internes Programm handelt. Um „cd“ ordnungsgemäß aufzurufen, sollten Sie den Befehl „cd“ mit dem Argument „shell=True“ verwenden:
<code class="python">subprocess.call('cd ..', shell=True) </code>
Dieser Code ist jedoch wirkungslos, da ein Prozess das Arbeitsverzeichnis eines anderen Prozesses nicht ändern kann UNIX-ähnliche oder Windows-Betriebssysteme.
Stattdessen können Sie die Funktion „os.chdir()“ oder den „subprocess“ namens Parameter „cwd“ verwenden, um das Arbeitsverzeichnis zu ändern, bevor Sie den Unterprozess ausführen.
Um beispielsweise „ls“ im Stammverzeichnis auszuführen, können Sie Folgendes verwenden:
<code class="python">os.chdir("/") subprocess.Popen("ls")</code>
oder einfach:
<code class="python">subprocess.Popen("ls", cwd="/")</code>
Das obige ist der detaillierte Inhalt vonWie führe ich Skripte in Unterverzeichnissen oder Superverzeichnissen mit Subprocess aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!