我正在用Python3编写软件(更具体地说:Python 3.8.1)。在某个时刻,软件需要检查一些任意的可执行文件是64位还是32位。经过一番研究,我发现了以下的帖子:
Checking if an exe is 32 bit or 64 bit
在这篇文章中,提供了以下解决方案:
subprocess.call(['dumpbin', '/HEADERS', 'test2.exe', '|', 'find', '"machine"'])不幸的是,这在Python 3.8.1中不起作用。这篇文章几乎有8年的历史,可以追溯到Python 2.x时代。
如何从Python 3.x内部测试64位?我需要一个Linux和Windows 10的解决方案。
编辑:
与Windows有关的说明:
显然,DumpBin解决方案(请参阅Checking if an exe is 32 bit or 64 bit post)需要安装Visual。对我来说是不-不。我的Python3软件应该运行在任何Windows 10计算机上。
与Linux相关的注意事项:
在Linux上,我不需要测试PE格式的可执行文件。只有Linux可执行文件是可以执行的。
发布于 2020-05-25 09:37:24
检测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) == 6https://stackoverflow.com/questions/61999530
复制相似问题