与文件同名的导入模块

我想将日志记录https://docs.python.org/3/library/logging.html导入到名为logging.py的文档中。但是,当我尝试导入logging.handlers时,它失败了,因为我认为它是在文档中搜索处理程序功能,而不是从模块中导入。如何解决此问题,以便它将查找更高级别的日志记录,而不是查找文件内部?

恩普

您可以通过从python路径中删除当前目录(首先是sys.path)来做到这一点:

import sys
sys.path = sys.path[1:]
import logging
print dir(logging)

测试:

$ python logging.py 
['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR',
 'FATAL', 'FileHandler', 'Filter', 'Filterer', 'Formatter', 'Handler',
 'INFO', 'LogRecord', 'Logger', 'LoggerAdapter', 'Manager', 'NOTSET', 
 'NullHandler', 'PlaceHolder', 'RootLogger', 'StreamHandler', 'WARN',
 'WARNING', '__all__', '__author__', '__builtins__', '__date__',
 '__doc__', '__file__', '__name__', '__package__', '__path__',
 '__status__', '__version__', '_acquireLock', '_addHandlerRef',
 '_checkLevel', '_defaultFormatter', '_handlerList', '_handlers',
 '_levelNames', '_lock', '_loggerClass', '_releaseLock',
 '_removeHandlerRef', '_showwarning', '_srcfile', '_startTime',
 '_unicode', '_warnings_showwarning', 'addLevelName', 'atexit',
 'basicConfig', 'cStringIO', 'captureWarnings', 'codecs', 'critical',
 'currentframe', 'debug', 'disable', 'error', 'exception', 'fatal',
 'getLevelName', 'getLogger', 'getLoggerClass', 'info', 'log',
 'logMultiprocessing', 'logProcesses', 'logThreads', 'makeLogRecord',
 'os', 'raiseExceptions', 'root', 'setLoggerClass', 'shutdown', 'sys',
 'thread', 'threading', 'time', 'traceback', 'warn', 'warning',
 'warnings', 'weakref']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章