将zip文件本地下载到tempfile,将文件解压到tempfile,并列出文件

Posted

技术标签:

【中文标题】将zip文件本地下载到tempfile,将文件解压到tempfile,并列出文件【英文标题】:Download zip file locally to tempfile, extract files to tempfile, and list the files 【发布时间】:2019-04-17 02:09:04 【问题描述】:

我正在尝试重新使用 python,但我不确定从哪里开始,但我想在本地下载一个 zip 文件到 temp,解压缩文件,然后列出文件(这是 99.99% 的时间csv 文件)。我想列出这些文件,以便我可以根据逻辑进一步处理其中一个文件,并自动删除临时目录。

我可以在 R 中相当简洁地完成上述大部分操作,但我的要求是将这个想法映射到 python 和我最初的 Google 搜索中,我发现的解决方案似乎并不简单,也不完全符合我的要求为了。

任何帮助将不胜感激。

【问题讨论】:

可能最好使用tempfile。 【参考方案1】:

我们首先通过requests下载文件

import requests

results = requests.get('<url_to_zip>')
with open('/tmp/zip_folder.zip', 'wb') as f:
    f.write(results.content)

然后我们使用 zipfile 将 zip 文件解压缩到 /tmp

import zipfile
file = zipfile.ZipFile('/tmp/zip_folder.zip')
file.extractall(path='/tmp')

然后我们列出文件。

files = os.listdir('/tmp/zip_folder')
for file in files:
    if 'csv' in file:
        print(file)

【讨论】:

这太棒了。在第一个块中,我假设它应该是f.write(results.content)。也许这超出了范围,但是在同一个块中,外部 zip 文件是在本地写入的,它也可以在临时文件中吗? 再次感谢。最后一部分是查找 csv 文件,但我可以使用 import glob; files = glob.glob(path + "*csv*") where path = "/tmp/" 做到这一点。 python 中的 tempfile 是一个实际的东西,而不是一个想法。您在这里所做的是下载到“临时文件”。谷歌搜索解压缩到临时文件,错误地将我带到这里。

以上是关于将zip文件本地下载到tempfile,将文件解压到tempfile,并列出文件的主要内容,如果未能解决你的问题,请参考以下文章

node.js如何将远程的文件下载到本地解压读取

在rails 中返回 zip 文件

通过php提取自解压exe档案

android 下载zip文件并解压

Maven环境搭建

如何将下载的文件解压到文档目录