标准导入会自动使用zipimport
模块来处理.zip
sys.path元素。
是否可以添加钩子以支持其他文件类型?例如.tar.gz
的处理程序?
因此,例如,如果sys.path包含/path/to/archive.tar.gz
或/path/to/archive.xyz
个处理程序,则可以提供这些文件来打开和阅读.tar.gz
或.xyz
个文件。
答案 0 :(得分:1)
是的,有两种方法可以做到这一点:
__builtin__.__import__()
函数。这是一种完全覆盖import
关键字所做内容的低级方法,不建议用于一般用途。sys.meta_path
,以实现所需的功能,或添加一个将此类查找器返回sys.path_hooks
的可调用对象。在Python 3中比在Python 2中更容易实现Finders,因为3.x在importlib
中提供了许多构建块。但是,它们也可以在Python 2中实现(您只需编写更多代码)。一般来说,无论2.x与3.x相比,(2)都比(1)容易得多。 (1)仅作为最后手段推荐。有关(2)的更多信息,请参阅PEP 302。