OSError: [Errno 8] Error de formato Exec en Python

Rohan Timalsina 21 junio 2023
  1. Vuelva a crear OSError: [Errno 8] Exec format error en Linux
  2. Agregue #!/bin/sh para arreglar OSError: [Errno 8] Exec format error en Linux
  3. Use sh para arreglar OSError: [Errno 8] Exec format error en Linux
OSError: [Errno 8] Error de formato Exec en Python

El módulo subproceso en Python le permite ejecutar comandos creando nuevos procesos. Al ejecutar un script de shell utilizando sus métodos, a veces puede obtener un OSError: [Errno 8] Exec format error en Linux.

El problema Error de formato Exec surge cuando el script se ejecuta directamente y no a través del intérprete correcto. Ocurre si no hay una línea shebang al comienzo del archivo de script.

Este tutorial le enseñará a corregir el OSError: [Errno 8] Exec format error de Linux.

Vuelva a crear OSError: [Errno 8] Exec format error en Linux

Primero, vamos a recrear OSError: [Errno 8] Exec format error en Linux.

El siguiente es un script de Bash myshell.sh que devuelve Bienvenido a los tutoriales de DelftStack.

echo "Welcome to DelftStact Tutorials"

A continuación se muestra un script de Python, myscript.py, que ejecuta el script anterior usando subprocess.Popen().

import subprocess

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

Ejecute el script de Python en la terminal.

python3 script.py

Producción :

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'

Como puedes ver, devuelve el error OSError: [Errno 8] Exec format error.

Agregue #!/bin/sh para arreglar OSError: [Errno 8] Exec format error en Linux

La mejor manera de resolver este problema es agregando #!/bin/sh en la parte superior del archivo de script de shell myshell.sh. Garantiza que el sistema utilice el intérprete adecuado para ejecutar el script .sh.

Edite el archivo myshell.sh con cualquier editor y agregue las siguientes líneas.

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

Ahora ejecute el script de Python para ver el resultado.

python3 myscript.py

Producción :

Welcome to DelftStack Tutorials

Use sh para arreglar OSError: [Errno 8] Exec format error en Linux

También puede especificar sh en el script de Python en el comando que ejecuta el archivo de script de shell.

Aquí hay un ejemplo de ello.

import subprocess

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

A continuación, ejecute el archivo de script de Python.

python3 myscript.py

Producción :

Welcome to DelftStack Tutorials

Ahora ya sabe cómo resolver OSError: [Errno 8] Exec format error y ejecutar scripts de shell usando Python en Linux. Esperamos que este tutorial le resulte útil.

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

Artículo relacionado - Python Error