我正在重构和消除一些相当单一的代码上的通配符导入。
Pylint 似乎在列出所有未使用的导入以及通配符导入方面做得很好,但我希望它提供一个使用过的导入列表,以便我可以快速替换通配符导入。有什么快速的方法吗?我将要解析 pyLint 的输出并对set.difference()
这个和dir()
导入的模块做一个。但我敢打赌,有一些我不知道的工具/程序。
我正在重构和消除一些相当单一的代码上的通配符导入。
Pylint 似乎在列出所有未使用的导入以及通配符导入方面做得很好,但我希望它提供一个使用过的导入列表,以便我可以快速替换通配符导入。有什么快速的方法吗?我将要解析 pyLint 的输出并对set.difference()
这个和dir()
导入的模块做一个。但我敢打赌,有一些我不知道的工具/程序。
注意:pylint 不建议使用一组使用过的导入。更改此设置时,您必须注意导入您正在修改的代码的其他模块,这些模块可能使用属于您正在重构的模块的命名空间的符号,只是因为您有未使用的导入。
我建议使用以下程序进行重构from foo import *
:
在交互式外壳中,键入:
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)])
from foo import *
用上面打印的那一行替换该行
重复from bar import *
这里是 dewildcard,一个非常简单的工具,基于 Alex 最初的想法:
这是一个老问题,但我写了一些基于 autoflake 的东西。
见这里:https ://github.com/fake-name/autoflake/blob/master/autostar.py
它与 dewildcard 的工作方式相反,因为它试图完全限定通配符项目的所有用途。
例如
from os.path import *
转换为
import os.path
并且所有用法os.path.<func>
都以适当的功能为前缀。