HCRM博客

为何会出现_binary报错?该如何解决?

常见报错类型及原因分析

1、Cannot execute binary file: Exec format error

原因尝试执行不兼容体系架构的二进制文件,在32位Linux操作系统上运行64位的可执行文件时会出现此错误。

为何会出现_binary报错?该如何解决?-图1
(图片来源网络,侵权删除)

解决方法:检查二进制文件的来源和目标系统架构,确保它们相互兼容,如果需要在不兼容架构间运行程序,可以考虑使用交叉编译或寻找适用于目标架构的预编译二进制文件。

2、ValueError: binary mode doesn‘t take an encoding argument

原因:在使用open()函数以二进制模式('wb'、'rb'等)打开文件时,错误地指定了encoding参数,二进制模式与文本模式不同,不需要指定编码方式。

解决方法:删除二进制模式下的encoding参数,将open(file_path, 'wb', encoding='utf8')修改为open(file_path, 'wb')

3、Permission denied

原因:用户没有执行该二进制文件的权限。

为何会出现_binary报错?该如何解决?-图2
(图片来源网络,侵权删除)

解决方法:使用chmod +x <filename>命令赋予文件执行权限,然后再次尝试执行。

示例代码

以下是一些可能导致“_binary报错”的示例代码及其正确版本:

1、错误示例:在32位系统上运行64位可执行文件

   ./test64bit
   # 报错:cannot execute binary file: Exec format error

解决方法:在64位系统上重新编译或获取适用于32位系统的可执行文件。

2、错误示例:以错误的模式打开二进制文件并指定编码

   with open('data.bin', 'wb', encoding='utf8') as f:
       f.write(b'some binary data')
   # 报错:ValueError: binary mode doesn’t take an encoding argument

解决方法:移除encoding参数

为何会出现_binary报错?该如何解决?-图3
(图片来源网络,侵权删除)
   with open('data.bin', 'wb') as f:
       f.write(b'some binary data')

“_binary报错”通常与二进制文件的兼容性、权限或操作模式有关,在遇到此错误时,应仔细检查二进制文件的来源、目标系统架构以及代码中的文件操作模式,并根据具体错误信息进行相应的调整和修复。

FAQs

1、Q: 如何在不兼容的架构间运行二进制文件?

A: 可以尝试使用交叉编译工具链为目标架构编译源代码,或者在目标架构上重新编译源代码以生成兼容的二进制文件。

2、Q: 为什么二进制模式不能指定编码?

A: 二进制模式主要用于处理非文本数据,如图像、音频等,这些数据本身不涉及字符编码,因此不需要指定编码方式,而文本模式则用于处理文本数据,需要指定编码以确保字符的正确解读。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/gz/21910.html

分享:
扫描分享到社交APP
上一篇
下一篇