在用Python遍历文件时忽略错误提示
我现在正在做一个任务,需要用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和except,代码会在遇到这个无效签名的可执行文件时直接停止运行。
如果我不使用try和except,错误信息会是这样的:
PEFormatError: 'Invalid NT Headers signature.'
不过,使用上面的代码会导致无限循环,有没有什么办法可以解决这个问题呢?
1 个回答
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
是更推荐的字符串格式化方式。