我正在用Python3(更具体地说:)编写软件Python 3.8.1
。在某个时候,软件需要检查某些任意可执行文件是64位还是32位。经过研究,我发现以下内容:
在这篇文章中,提供了以下解决方案:
subprocess.call(['dumpbin', '/HEADERS', 'test2.exe', '|', 'find', '"machine"'])
不幸的是,这不适用于Python 3.8.1
。该职位将近8年了,可以追溯到Python 2.x
过去。
如何从内部测试64位Python 3.x
?我需要针对Linux和Windows 10的解决方案。
编辑:
与Windows相关的注释:
显然,DumpBin
解决方案(请参阅检查exe是32位还是64位),需要安装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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句