繁体   English   中英

python 是否支持*导入* gzip 文件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM