首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows/Linux上使用python3脚本检查可执行文件是32位还是64位

在Windows/Linux上使用python3脚本检查可执行文件是32位还是64位
EN

Stack Overflow用户
提问于 2020-05-25 09:27:43
回答 1查看 960关注 0票数 1

我正在用Python3编写软件(更具体地说:Python 3.8.1)。在某个时刻,软件需要检查一些任意的可执行文件是64位还是32位。经过一番研究,我发现了以下的帖子:

Checking if an exe is 32 bit or 64 bit

在这篇文章中,提供了以下解决方案:

代码语言:javascript
复制
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可执行文件是可以执行的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-25 09:37:24

检测ELF二进制文件(即Linux)的64位很容易,因为它总是位于标题中的同一位置:

代码语言:javascript
复制
def is_64bit_elf(filename):
    with open(filename, "rb") as f:
        return f.read(5)[-1] == 2

我没有Windows系统,所以我无法测试它,但这可能在Windows上有效:

代码语言:javascript
复制
def is_64bit_pe(filename):
    import win32file
    return win32file.GetBinaryType(filename) == 6
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61999530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档