我目前正在处理一项任务,我需要使用pefile模块迭代多个可执行文件,代码看起来像这样
while True:
try:
for filename in glob.iglob('C:\Documents and Settings\Zha\Desktop\PE benign\*.exe'):
pe = pefile.PE(filename)
print '%x' % pe.FILE_HEADER.NumberOfSections
except:
pass
我的意图使用try和except是为了克服错误引发每当一个可执行文件引发错误,其中NT标头给出无效签名,因为如果我不使用try,除了代码将停止在它找到一个无效的可执行文件的位置NT标题签名
如果我不使用try和
,这就是消息的样子PEFormatError: 'Invalid NT Headers signature.'
但是使用上面的代码会导致无限循环,有没有办法解决这个问题?
答案 0 :(得分:1)
不要使用while True
循环。只需将try except
移到for
循环中:
for filename in glob.iglob('...'):
try:
pe = pefile.PE(filename)
except PEFormatError as err:
print "{} in file '{}'".format(err, filename)
continue
print '{}'.format(pe.FILE_HEADER.NumberOfSections)
此外,您的字符串格式化语法没有错误,但format
是格式化字符串的首选方法。