[英]Is there support in python to *import* a gzipped file?
假设我有一个 gzipped mymodule.py.gz
我希望 python(可能有一些参数)可以导入它:
import mymodule
(我想当找不到 a.py 文件时,就会查找 then.py.gz。)
或者可能有特定版本的导入:
gzimport mymodule
如果可能的话,我不想解压缩文件。 我想,我可以解压缩它(从 python 中可能到 /tmp)并正常导入它。 但如果不是必须的话,我宁愿不这样做。)其他压缩格式也很有趣。
既然你提到“其他压缩格式也会感兴趣”:
这实际上适用于 .zip 格式。 您只需要将 zip 文件放在sys.path
上(就像任何其他包含可用于导入的 .py 文件的目录一样)。
$ echo 'print("hello world")' > mymodule.py
$ zip -o example.zip mymodule.py
adding: example.py (stored 0%)
$ rm mymodule.py
$ python3
Python 3.10.2 (main, Feb 2 2022, 06:19:27) [Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.append("example.zip")
>>> import mymodule
hello world
它之所以有效,是因为默认情况下有一个zipimporter处于活动状态:
>>> mymodule
<module 'mymodule' from 'example.zip/mymodule.py'>
>>> mymodule.__loader__
<zipimporter object "example.zip/">
要使其适用于 .gz 格式,您可以通过将 gzip 导入器添加到sys.meta_path
来相当轻松地添加支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.