Bash-Befehle in Python ausführen
Beim Ausführen von Bash-Befehlen innerhalb eines Python-Skripts auf einem Server können Fehler auftreten, auch wenn derselbe Code verwendet wird funktioniert lokal. Ein häufiger Grund dafür ist die unterschiedliche Art und Weise, wie Bash vom Betriebssystem aufgerufen wird.
Bash verstehen
In Python können Sie Bash-Befehle mithilfe des Unterprozessmoduls ausführen. Das Standardverhalten ist jedoch die Verwendung von /bin/sh, einer minimalen Shell, die nicht alle Funktionen von Bash unterstützt. Wenn Sie eine Bash-spezifische Syntax benötigen, müssen Sie die ausführbare Bash-Datei explizit angeben als:
subprocess.run(command, shell=True, executable='/bin/bash')
Shell vs. No Shell
Sie können subprocess.run( ) mit Shell=True oder Shell=False. Mit „shell=True“ geben Sie einen einzelnen String-Befehl an, den die Shell analysiert. Mit „shell=False“ übergeben Sie eine Liste von String-Argumenten an die ausführbare Datei, ohne eine Shell zu verwenden.
Die Verwendung von „shell=False“ vermeidet Shell-Funktionen, erfordert jedoch eine präzise Analyse des Befehls in Argumente. Die Funktion shlex.split() kann dabei helfen.
subprocess.run(shlex.split(command)) # shell=False
Textdekodierung
Standardmäßig wird die Ausgabe des Unterprozesses als Bytes bereitgestellt. Um es in eine Unicode-Zeichenfolge zu dekodieren, verwenden Sie text=True.
subprocess.run(command, shell=True, text=True)
Fehlerbehebung
Wenn weiterhin Fehler auftreten, ist es wichtig, Folgendes zu überprüfen:
Das obige ist der detaillierte Inhalt vonWarum schlagen meine Bash-Befehle in Python auf dem Server fehl, funktionieren aber lokal?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!