Python 运行脚本错误 OSError: [Errno 8] Exec Format Error

Python 中的 subprocess 模块允许您通过创建新进程来运行命令。 使用其方法运行 shell 脚本时,有时您可能会在 Linux 中遇到 OSError: [Errno 8] Exec format error。

当脚本直接运行而不是通过正确的解释器时,会引发 Exec 格式错误问题。 如果脚本文件的开头没有 shebang 行,则会发生这种情况。

本篇文章将介绍如何修复 Linux 的 OSError: [Errno 8] Exec format error


重现Linux中OSError: [Errno 8] Exec format error 错误

首先,让我们在 Linux 中重现 OSError: [Errno 8] Exec format error

以下是返回 Welcome to Jiyik Tutorials 的 Bash 脚本 myshell.sh。

echo "Welcome to Jiyik Tutorials"

下面是一个 Python 脚本 myscript.py,它使用 subprocess.Popen() 运行上述脚本。

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

在终端中运行 Python 脚本。

python3 script.py

输出:

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_childraise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: '/home/jiyik/myshell.sh'

如您所见,它返回错误 OSError: [Errno 8] Exec format error


添加 #!/bin/sh 以修复Linux中 OSError: [Errno 8] Exec format error

解决此问题的最佳方法是在 shell 脚本文件 myshell.sh 的顶部添加 #!/bin/sh。 它确保系统使用正确的解释器来运行 .sh 脚本。

使用任何编辑器编辑 myshell.sh 文件并添加以下行。

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

现在运行 Python 脚本以查看结果。

python3 myscript.py

输出:

Welcome to Jiyik Tutorials

使用 sh 修复Linux 中的 OSError: [Errno 8] Exec format error

您也可以在运行 shell 脚本文件的python 脚本命令中指定 sh

这是一个例子。

import subprocess
shell_file = '/home/jiyik/myshell.sh'
P = subprocess.Popen(['sh', shell_file])

接下来,运行 Python 脚本文件。

python3 myscript.py

输出:

Welcome to Jiyik Tutorials

现在你知道如何在 Linux 中使用 Python 解决 OSError: [Errno 8] Exec format error 和运行 shell 脚本了。 我们希望大家觉得本篇文章对您有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前后端联调

JavaWenb开发 pom.xml 文件 配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://ma…

ROS2 Gazebo:三维物理仿真平台

介绍 Gazebo是ROS系统中最为常用的三维物理仿真平台&#xff0c;支持动力学引擎&#xff0c;可以实现高质量的图形渲染&#xff0c;不仅可以模拟机器人及周边环境&#xff0c;还可以加入摩擦力、弹性系数等物理属性。 比如我们要开发一个火星车&#xff0c;那就可以在Gazebo中…

Leetcode 2661. 找出叠涂元素

Leetcode 2661. 找出叠涂元素题目 给你一个下标从 0 开始的整数数组 arr 和一个 m x n 的整数 矩阵 mat 。arr 和 mat 都包含范围 [1&#xff0c;m * n] 内的 所有 整数。从下标 0 开始遍历 arr 中的每个下标 i &#xff0c;并将包含整数 arr[i] 的 mat 单元格涂色。请你找出 a…

OpenHarmony 关闭息屏方式总结

前言 OpenHarmony源码版本&#xff1a;4.0release 开发板&#xff1a;DAYU / rk3568 一、通过修改系统源码实现不息屏 修改目录&#xff1a;base/powermgr/power_manager/services/native/profile/power_mode_config.xml 通过文件中的提示可以知道DisplayOffTime表示息屏的…

用js手动写一个纵向滚动条

业务场景&#xff1a;由于通过css无法改动ios设备的滚动条样式&#xff0c;所以这里采取用js手动写一个纵向滚动条 功能&#xff1a;实现滚动的时候出现滚动条&#xff0c;停止滚动&#xff0c;滚动条消失&#xff0c;示例代码如下&#xff1a; <!DOCTYPE html> <ht…

STM32_CAN通讯波特率和采样点计算与设置

STM32_CAN通讯波特率设置 CAN参数计算与设置CAN时钟 STM32的 CAN外设位时序中只包含 3 段&#xff0c;分别是同步段 SYNC_SEG、位段BS1 及位段 BS2,采样点位于 BS1及BS2 段的交界处。 其中,SYNC_SEG段固定长度为 1T,可以在重新同步期间增长或缩短,该长度 SJW 也可在位时序寄存…

Ros2 bag数据包提取图片

项目地址&#xff1a; GitHub - cabinx/ros2_bag_to_image: Opens, reads, extracts and saves sensor_msgs/msg/Image or sensor_msgs/msg/CompressedImages from Ros2 bag, works on ros2 foxy. 做数据集需要从ros2的数据包中提取图片&#xff0c;在github找到了开源的项目…

MySQL的函数

<!DOCTYPE html> <html> <head> <meta charset"UTF-8" /> <title>mysql函数</title> </head> <body> <!-- Mysql函数 字符串函数 函数指的是一段可以直接被另一段程序调用的程序或代码 字符串函数 concat(s1…

什么是死锁?如何产生死锁?死锁的必要条件?怎么解决死锁?

🔒1、什么是死锁 死锁是一个非常让程序猿烦恼的问题,一旦所写的程序有了死锁,那么程序就无法执行下去,会出现严重的 bug,并且死锁非常隐蔽,我们不会轻易发现它,在开发阶段,不经意期间我们就会写出死锁,很难检测出来。 那么什么是死锁呢?竟然让我们如此烦恼。 “死…

Android textView 显示: STRING_TOO_LARGE

在Android中&#xff0c;字符串资源的长度限制是32KB&#xff0c;getString()方法返回的字符串资源的大小超过这个限制&#xff0c;就会抛出STRING_TOO_LARGE 这个错误。 我本地的临界值是&#xff1a;32.3 KB (33,090 字节) 小于等于33090时&#xff0c;能正常显示&#xff…

基于OpenSSL和nginx搭建本地https服务器(详细实操版)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

腾讯云最新优惠券领取入口,总面值2000元代金券,新用户、老用户、企业用户均可领取!

腾讯云推出年末感恩回馈活动&#xff0c;新老用户可免费领取总面值2000元的代金券礼包&#xff0c;适用于多种预付费产品&#xff0c;最高可抵扣36个月订单&#xff0c;领取后30天内有效。 领取入口&#xff1a; https://curl.qcloud.com/UpmL4ho3 领取说明&#xff1a; 腾…

git push 报错 error: src refspec master does not match any 解决

git报错 ➜ *** git:(main) git push -u origin "master" error: src refspec master does not match any error: failed to push some refs to https://gitee.com/***/***.git最新版的仓库初始化后 git 主分支变成了 main 方法 1.把 git 默认分支名改回 master …

VSCode搭建STM32开发环境

1、下载安装文件 链接&#xff1a;https://pan.baidu.com/s/1WnpDTgYBobiZaXh80pn5FQ 2、安装VSCodeUserSetup-x64-1.78.2.exe软件 3、 在VSCode中安装必要的插件 3、配置Keil Assistant插件 4、在环境变量中部署mingw64编译环境

Git的介绍和下载安装

Git的介绍和下载安装 概述 Git是一个分布式版本控制工具, 通常用来管理项目中的源代码文件(Java类、xml文件、html页面等)进行管理,在软件开发过程中被广泛使用 Git可以记录文件修改的历史记录并形成备份从而实现代码回溯, 版本切换, 多人协作, 远程备份的功能Git具有廉价的…

USB Type-C的基本原理

1 USB Type-C的基本原理 1.1 基本特性 Figure 1-1 USB Type-C接头外形 USB Type-C&#xff08;简称USB-C&#xff09;的基本特性&#xff1a; 1. 接口插座的尺寸与原来的Micro-USB规格一样小&#xff0c;约为8.3mm X 2.5mm 2. 可承受1万次反复插拔 3. 支持正反均可插入的“正反…

知虾平台丨优化Shopee店铺运营,提升销售利润——了解知虾平台

在如今竞争激烈的电商市场中&#xff0c;Shopee作为一家快速发展的平台&#xff0c;吸引了众多卖家加入。然而&#xff0c;要在Shopee上取得成功并实现可观的销售利润&#xff0c;并不是一件容易的事情。为了帮助卖家更好地了解市场趋势、优化商品关键词、监控竞争对手等&#…

上海毅速:深挖模具领域 成为行业变革者

近年来&#xff0c;3D打印在模具行业取得了大量的应用和拓展&#xff0c;越来越多的产品开始选择3D打印或者使用3D打印模具来进行制造。经过不断的发展&#xff0c;上海毅速副总王利军发现3D打印需要好的材料、好的工艺&#xff0c;同时也离不开好的装备平台。 在接受南极熊采访…

[1] AR Tag 在ros中的使用

1.定义 AR Tag 是一种用于增强现实&#xff08;AR&#xff09;应用中的视觉标记&#xff0c;用于跟踪和定位虚拟物体在现实世界中的位置。 AR Tag由黑白正方形图像表示&#xff0c;图像内部有黑色边框中的某些图案。它与我们经常用到的二维码长得类似&#xff0c;原理其实也一…

Git常用命令#更改用户名

1.查看当前用户信息 git config user.name2.更改用户名 特定仓库中更改用户名 如果你只想在特定仓库中更改用户名&#xff0c;可以在不使用 --global 参数的情况下执行相同的命令&#xff0c;并进入特定仓库的目录进行修改。 cd /path/to/your/repository git config user.na…