OSError: [Errno 8] Exec-Formatfehler in Python

Rohan Timalsina 21 Juni 2023
  1. Erstellen Sie OSError: [Errno 8] Exec format error unter Linux neu
  2. Fügen Sie #!/bin/sh hinzu, um OSError: [Errno 8] Exec format error in Linux zu beheben
  3. Verwenden Sie sh, um OSError: [Errno 8] Exec format error unter Linux zu beheben
OSError: [Errno 8] Exec-Formatfehler in Python

Mit dem Modul subprocess in Python können Sie Befehle ausführen, indem Sie neue Prozesse erstellen. Wenn Sie ein Shell-Skript mit seinen Methoden ausführen, erhalten Sie unter Linux manchmal einen OSError: [Errno 8] Exec format error.

Das Problem Exec format error wird ausgelöst, wenn das Skript direkt ausgeführt wird und nicht über den richtigen Interpreter. Es tritt auf, wenn am Anfang der Skriptdatei keine Shebang-Zeile steht.

Dieses Tutorial wird Ihnen beibringen, Linuxs OSError: [Errno 8] Exec format error zu beheben.

Erstellen Sie OSError: [Errno 8] Exec format error unter Linux neu

Lassen Sie uns zuerst OSError: [Errno 8] Exec format error unter Linux neu erstellen.

Das Folgende ist ein Bash-Skript myshell.sh, das Welcome to DelftStack Tutorials zurückgibt.

echo "Welcome to DelftStact Tutorials"

Unten ist ein Python-Skript, myscript.py, das das obige Skript mit subprocess.Popen() ausführt.

import subprocess

shell_file = "/home/delft/myshell.sh"
P = subprocess.Popen(shell_file)

Führen Sie das Python-Skript im Terminal aus.

python3 script.py

Ausgang:

Traceback (most recent call last):
  File "myscript.py", line 3, in <module>
    P = subprocess.Popen(shell_file)
  File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: '/home/delft/myshell.sh'

Wie Sie sehen können, gibt es den Fehler OSError: [Errno 8] Exec format error zurück.

Fügen Sie #!/bin/sh hinzu, um OSError: [Errno 8] Exec format error in Linux zu beheben

Der beste Weg, dieses Problem zu lösen, ist das Hinzufügen von #!/bin/sh am Anfang der Shell-Skriptdatei myshell.sh. Es stellt sicher, dass das System den richtigen Interpreter verwendet, um das .sh-Skript auszuführen.

Bearbeiten Sie die Datei myshell.sh mit einem beliebigen Editor und fügen Sie die folgenden Zeilen hinzu.

#!/bin/sh
echo "Welcome to DelftStack Tutorials"

Führen Sie nun das Python-Skript aus, um das Ergebnis anzuzeigen.

python3 myscript.py

Ausgang:

Welcome to DelftStack Tutorials

Verwenden Sie sh, um OSError: [Errno 8] Exec format error unter Linux zu beheben

Sie können auch sh im Python-Skript in dem Befehl angeben, der die Shell-Skriptdatei ausführt.

Hier ist ein Beispiel dafür.

import subprocess

shell_file = "/home/delft/myshell.sh"
P = subprocess.Popen(["sh", shell_file])

Führen Sie als Nächstes die Python-Skriptdatei aus.

python3 myscript.py

Ausgang:

Welcome to DelftStack Tutorials

Jetzt wissen Sie, wie Sie OSError: [Errno 8] Exec format error lösen und Shell-Skripte mit Python unter Linux ausführen. Wir hoffen, dass Sie dieses Tutorial hilfreich finden.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Verwandter Artikel - Python Error