我有一个包含两列的CSV文件,一个图片名称和一个图片网址...
实施例
A栏 - B栏
image1 - http://www.image1.jpg
image2 - http://www.image2.jpg
我正在尝试使用Python 2.7编写一个脚本,该脚本将CSV打开并将图像保存到目录c:\ images,并使用与图像对应的图像名称命名它们" image1& #34;," image2"等
到目前为止,我有以下代码:
import requests
import csv
import urllib2
images = csv.reader(open('image_urls.csv'))
for image in images:
response = urllib2.urlopen(image[0])
filename = 'image_{0}.{1}.jpg'
with open(filename,'wb') as w:
w.write(response)
w.close()
我有两个问题:
1)我不确定如何正确保存文件名作为CSV第一列中的名称(" image1")。
2)按原样运行此代码会出现以下错误:
Traceback (most recent call last):
File "downloadimages.py", line 11, in <module>
w.write(response)
TypeError: must be string or buffer, not instance
任何人都可以帮我修复错误和代码,以便按照我想要的方式保存文件名。
非常感谢提前。
答案 0 :(得分:0)
urllib2.urlopen返回一个像object这样的文件而不是字符串。所以你需要阅读它的内容:
with open(filename,'wb') as w:
w.write(response.read())
w.close()
答案 1 :(得分:0)
您可以使用urllib中的urlretrieve传递保存位置
from urllib import urlretrieve
with open ('image_urls.csv') as images:
images = csv.reader(images)
img_count = 1 # start at 1
for image in images:
urlretrieve(image[0],
'c:\\images\\image_{0}.jpg'.format(img_count)) # string formatting inserting count
img_count += 1 # increase count for each image.