我正在编写一个使用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
答案 0 :(得分:4)
您需要单独指定所有参数:
subprocess.call(['dumpbin', '/HEADERS', 'test2.exe', '|', 'find', '"machine"'])
你也可以在python中输出grep。
顺便说一句:platform.architecture()
告诉您当前运行scons 的平台架构,没有关于您正在生成的二进制文件,甚至是如何编译python版本。 可以为其他二进制文件提供此信息,但仅当可执行文件指向Python解释器时,并且可能不在Windows上,因为没有等效的{{1} }命令出现在那里。