使用 Python 将文件直接下载到存档中

吉尔

我想下载多个文件并将它们保存在一个 zipfile 中。

到目前为止,这是我的代码:

import zipfile
import requests
import os

pics = ['url/1.jpg', 'url/2.jpg', 'url/3.jpg']
dir = '/directory' 

with zipfile.ZipFile(dir + '/test.zip', 'w') as my_zip:



    for x in range(len(pics)):
        
        fn = dir + '/' + pics[x].split('/')[-1]
        
        r = requests.get(pics[x], allow_redirects=True)
        open(fn, 'wb').write(r.content)
    
        my_zip.write(fn, str(x+1) + os.path.splitext(fn)[1])
        
        os.remove(fn)

有没有更聪明/更清洁/更短的方法来做到这一点。下载 img,然后将其放入 zip 中,然后删除它似乎不必要地复杂...

闪耀J

我认为你应该在这种情况下创建一个临时文件。

这应该有效:

import requests
import zipfile
import tempfile

pics = ['http://www.princeton.edu/~dancexp/Images/1-XPAlifun.jpg',
        'http://www.princeton.edu/~dancexp/Images/1-ExposeJess.jpg',
        'http://www.princeton.edu/~dancexp/Images/JessHsurevisedlores.jpg']

picdirname = "mypics"

with zipfile.ZipFile("test.zip", "w") as my_zip:
                     
    for pic in pics:
        response = requests.get(pic)
        if response.status_code == 200:
            tmpf = tempfile.TemporaryFile()
            tmpf.write(response.content)
            tmpf.seek(0)
            my_zip.writestr(pic.split('/')[-1], tmpf.read())
            tmpf.close()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用python将文件下载到特定文件夹

如何使用 Python 从 Amazon S3 将 JPG 文件下载到内存中?

使用请求将多个文件(字节)下载到python中的目录

如何使用Python从Excel导出中的超链接下载文件

我如何直接从Azure Blob存储中读取文本文件而不将其下载到本地文件(使用python)?

将文件直接下载到内存

使用python 2.7将csv文件加载到mysql中

使用Selenium和python将文件下载到指定位置

Python脚本,使用BeautifulSoup将网站上的所有图像下载到指定的文件夹

如何使用python和boto3将Amazon S3文件下载到文件夹中的本地机器上?

使用Python,如何将多个文件从FTP服务器上的子目录下载到本地计算机上的所需目录中?

使用Python将所有文件从带日期的SFTP文件夹下载到本地文件夹

如何使用curl或wget将文件下载到目录中?

使用Python将图像下载到sqlite数据库

使用python将网页和相关资源下载到WARC

使用python自动执行ssh'到服务器和将文件下载到特定文件夹的过程

在Python 3中将gzip与包含多个文件的存档一起使用

(R)下载带有直接下载链接的文件,该文件可在浏览器中使用,但在R中无法使用

直接从SFTP服务器将音频文件加载到Python的语音识别模块(使用Paramiko SFTPClient)

Python通过csv中存储的链接下载文件

使用Symfony阻止直接下载

我可以不使用csvhelper定义文件路径而直接下载csv文件吗?

使用python查看.gz存档中包含的文件

使用证书存储而不是文件路径将证书加载到ssl中;用python

如何使用python将kml文件加载到Google Earth中

使用python 3.6将多个文件并行加载到内存中的最佳方法是什么?

使用python将整个文本文件加载到数据库中

我正在尝试使用Google云端硬盘API获取文件的直接下载链接

使用 PHP 将多个 .txt 文件下载到 .zip 文件中