Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich Skripte in Unterverzeichnissen oder Superverzeichnissen mit Subprocess aus?

Wie führe ich Skripte in Unterverzeichnissen oder Superverzeichnissen mit Subprocess aus?

Susan Sarandon
Susan SarandonOriginal
2024-11-05 04:22:02998Durchsuche

How to Execute Scripts in Subdirectories or Superdirectories with Subprocess?

Unterprozess im Unterverzeichnis oder Superverzeichnis

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn