我正在对一些相当庞大的代码进行重构和消除通配符导入。
Pylint似乎在列出所有随通配符导入而来的未使用导入方面做得很好,但我希望它提供一个已使用导入的列表,这样我就可以快速地替换通配符导入。有没有快速的方法可以做到这一点?我将要解析pyLint的输出,并对其与导入模块的dir()
进行set.difference()
。但我敢打赌还有一些我不知道的工具/程序。
我正在对一些相当庞大的代码进行重构和消除通配符导入。
Pylint似乎在列出所有随通配符导入而来的未使用导入方面做得很好,但我希望它提供一个已使用导入的列表,这样我就可以快速地替换通配符导入。有没有快速的方法可以做到这一点?我将要解析pyLint的输出,并对其与导入模块的dir()
进行set.difference()
。但我敢打赌还有一些我不知道的工具/程序。
from foo import *
:
in an interactive shell, type:
import re
import foo as module # XXX use the correct module name here!
module_name = module.__name__
import_line = 'from %s import (%%s)' % module_name
length = len(import_line) - 3
print import_line % (',\n' + length * ' ').join([a for a in dir(module)
if not re.match('__.*[^_]{2}', a)])
replace the from foo import *
line with the one printed above
使用from bar import *
进行重复操作
这里介绍一个名为dewildcard的工具,它非常简单,基于Alex最初的想法:
from os.path import *
被转换为
import os.path
所有使用os.path.<func>
的地方都需要添加正确的函数名作为前缀。
__all__
吗? - Jakob Bowyer