python 2.7-如何将图像从CSV文件中的URL列表保存到目录

python 2.7-如何将图像从CSV文件中的URL列表保存到目录,python,image,python-2.7,url,csv,Python,Image,Python 2.7,Url,Csv,我有一个CSV文件,有两列,一个图像名称和一个图像url 范例 A列—B列 图1-- 图2-- 我正在尝试使用Python 2.7编写一个脚本,将CSV打开它并将图像保存到目录c:\images中,并使用对应于图像“image1”、“image2”等的图像名称命名它们 到目前为止,我有以下代码: import requests import csv import urllib2 images = csv.reader(open('image_urls.csv')) for image in i

我有一个CSV文件,有两列,一个图像名称和一个图像url

范例

A列—B列

图1--

图2--

我正在尝试使用Python 2.7编写一个脚本,将CSV打开它并将图像保存到目录c:\images中,并使用对应于图像“image1”、“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
回溯(最近一次呼叫最后一次):
文件“downloadimages.py”,第11行,在
w、 写入(响应)
TypeError:必须是字符串或缓冲区,而不是实例
有谁能帮我修复错误和代码,使其以我想要的方式保存文件名


非常感谢

urllib2.urlopen返回类似文件的对象,而不是字符串。因此,您需要阅读其内容:

with open(filename,'wb') as w:
    w.write(response.read())
    w.close()

您可以使用URL从urllib检索传递到要保存的位置

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.

您需要在响应时使用read方法。f=urlib2.urlopen(req)然后reply=f.read()