读取压缩的包资源



我创建了一个可以从PyPI安装的Python库。它从 Python 包中打开一个二进制文件(资源(:

with importlib.resources.open_binary(package_name, 'file.txt') as f:
...

现在我决定将file.txt压缩到file.txt.gz.如果它在常规文件之外,我可以 用gzip打开它

with gzip.open('file.txt.gz', 'rb') as f:

或带smart_open

with gzip.open('file.txt.gz', 'rb') as f:

但它住在图书馆里。在这种情况下如何打开.gz文件?

这适用于Python 3.9和Pandas 1.5.1。我的熊猫文件是csv,并且已被gzip压缩。 熊猫的压缩参数让它知道该怎么做。

filename = 'file.csv.gz'
import gzip
with resources.open_binary("my.package.folder", filename) as fo:
data_out = pd.read_csv(fo, compression="gzip")

在您的情况下,使用更通用的"txt.gz",我们为什么不呢 寻找类似的方法。 我不知道你认为确切的正确答案是什么,但请考虑一下:

import gzip
with resources.open_binary("my.package.folder", filename) as fo:
with gzip.open(fo) as fo2:
yy = fo2.read()
zz = yy.decode("utf-8")

我几乎可以肯定zz正是你想要的。

最新更新