使用python迭代文件时忽略错误

时间:2014-05-28 13:07:03

标签: python python-2.7 exception exception-handling infinite-loop

我目前正在处理一项任务,我需要使用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.' 

但是使用上面的代码会导致无限循环,有没有办法解决这个问题?

1 个答案:

答案 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是格式化字符串的首选方法。