【发布时间】:2023-03-08 08:12:02
【问题描述】:
正如标题所说,有没有一种方法可以在不将文件写入磁盘的情况下提取 tar.gz 存档(存档是从 Internet 下载的)。在 bash 或任何其他 shell 中,我可以将 curl 或 wget 的输出通过管道传输到 tar:
curl -L "https://somewebsite.com/file.tar.gz" | tar xzf -
我也可以在 python 中做这样的事情吗?
编辑:我正在使用 urllib 下载数据。我目前正在做这样的事情来下载并写入文件:
from urllib.request import urlopen
filename = "/home/bob/file.tar.gz"
url = "https://website.com/file.tar.gz"
file = open(filename, "wb")
file.write(urlopen(url).read())
file.close
【问题讨论】:
-
os.system 使用该命令行将是最简单的。标准库中还有“tarfile”模块docs.python.org/3/library/tarfile.html
-
我已经检查了 tarfile 模块,但我只能看到如何提取已下载或存在于文件系统中的存档。所以我想我必须使用 shell 命令然后
-
这里没有代码让我更正,但请注意,fileobj 参数可以是实现 read() 的 python 对象