检查exe是32位还是64位

时间:2012-06-19 08:47:53

标签: python scons

我正在编写一个使用scons构建.exe的python程序,然后检查它是64位还是32位。我试过platform.architecture(test1.exe),但问题是当我给出一个32位的exe时,它说它是64位的。

我尝试使用dumpbin,但输出很大,所以我使用了dumpin /HEADERS test.exe |find "machine"。问题是我无法使用python来执行此命令。当我使用subprocess.call(['dumpbin /HEADERS test2.exe |find "machine"'])时,我收到以下错误

Traceback (most recent call last):
  File "test_scons.py", line 66, in <module>
    print "Architecture of the compiled program is ",subprocess.call(["dumpbin /HEADERS test2.exe |find ""machine" ])
  File "C:\Python27\lib\subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python27\lib\subprocess.py", line 679, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

1 个答案:

答案 0 :(得分:4)

您需要单独指定所有参数:

subprocess.call(['dumpbin', '/HEADERS', 'test2.exe', '|', 'find', '"machine"'])

你也可以在python中输出grep。

顺便说一句:platform.architecture()告诉您当前运行scons 的平台架构,没有关于您正在生成的二进制文件,甚至是如何编译python版本。 可以为其他二进制文件提供此信息,但仅当可执行文件指向Python解释器时,并且可能不在Windows上,因为没有等效的{{1} }命令出现在那里。