问题描述
我编写了这段代码,它接受一个 URL 并下载图像。我想知道如何将图像保存到同一目录中的特定文件夹?
例如,我在同一目录中有一个名为 images
的文件夹。我想将所有图像保存到该文件夹中。
下面是我的代码:
import requests
import csv
with open('try.csv','r') as csv_file:
csv_reader = csv.reader(csv_file)
for rows in csv_reader:
image_resp = requests.get(rows[0])
with open(rows[1],'wb') as image_downloader:
image_downloader.write(image_resp.content)
解决方法
要找这个吗?
with open(os.path.join("images",rows[1]),'wb') as fd:
for chunk in r.iter_content(chunk_size=128):
fd.write(chunk)
在此处查看官方文档:os.path.join
从 https://2.python-requests.org/en/master/user/quickstart/#raw-response-content 请求特定的东西
PS:您可能想要使用连接池和/或多处理而不是 for rows in csv_reader
,以便有许多并发请求。
可以通过使用 Python 中 Pillow 库的 Image 模块的 .save() 方法来保存图像。
例如
from PIL import Image
file = "C://Users/ABC/MyPic.jpg" # Selects a jpg file 'MyPic'
img = Image.open(file)
img.save('Desktop/MyPics/new_img.jpg') # Saves it to MyPics folder as 'new_img'
Image.save(fp,format=None,**params)[source]:
以给定的文件名保存此图像。如果未指定格式,则尽可能根据文件扩展名确定要使用的格式。
关键字选项可用于向作者提供附加说明。如果作者不认识一个选项,它会被默默地忽略。每个作者的图像格式文档中都描述了可用选项。
您可以使用文件对象代替文件名。在这种情况下,您必须始终指定格式。文件对象必须实现seek、tell、write方法,并以二进制方式打开。