我想下载多个文件并将它们保存在一个 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 中,然后删除它似乎不必要地复杂...
我认为你应该在这种情况下创建一个临时文件。
这应该有效:
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] 删除。
我来说两句