我正在用 Python3 编写软件(更具体地说:Python 3.8.1
)。在某些时候,软件需要检查某个任意可执行文件是 64 位还是 32 位。经过一番研究,我发现了以下帖子:
检查 exe 是 32 位还是 64 位
在这篇文章中,提供了以下解决方案:
subprocess.call(['dumpbin', '/HEADERS', 'test2.exe', '|', 'find', '"machine"'])
不幸的是,这不适用于Python 3.8.1
。这篇文章已有近 8 年历史了,可以追溯到Python 2.x
days.
如何从内部测试 64 位Python 3.x
?我需要一个适用于 Linux 和 Windows 10 的解决方案。
EDITS :
Windows相关注意事项:
显然是DumpBin
解决方案(参见检查 exe 是 32 位还是 64 位post)需要安装 Visual Studio。这对我来说是禁忌。我的 Python3 软件应该在任何 Windows 10 计算机上运行。
Linux相关说明:
在 Linux 上,我不需要测试 PE 格式的可执行文件。只要是 Linux 可执行文件就可以了。
检测 ELF 二进制文件(即 Linux)的 64 位很容易,因为它始终位于标头中的同一位置:
def is_64bit_elf(filename):
with open(filename, "rb") as f:
return f.read(5)[-1] == 2
我没有Windows系统,所以我无法测试这个,但这可能适用于Windows:
def is_64bit_pe(filename):
import win32file
return win32file.GetBinaryType(filename) == 6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)