如何用Python 3遍历循环下载CSV文件中内容链接的图片?

本人目前情况如下:

现在有个文件表(CSV),表中信息均为图片链接,如图1所示
图1

很明显,这里需要用到循环,因此我的代码如下:

import csv    #加载csv包便于读取csv文件
import requests

with open ('vehicles.csv','r',encoding = 'utf-8') as csvfile:
    reader = csv.reader(csvfile)
    links = [row[1] for row in reader]

for link in links:
    imgresponse = requests.get(link, stream=True)   #以流的方式打开
    image = imgresponse.content
    address="H:\程序语言学习用文件夹\Python\images"+"\\"   #保存地址
    i = 1
    try:
        with open(address+"{0}".format(i) ,"wb") as jpg: 
            jpg.write(image)
            i = i + 1
    except IOError:
        print("IO Error\n")
    finally:
        jpg.close

然而实际情况是,控制台没有报错,但图片只下载了一张,就是最后一张,而且它还被命名成了“1”??!!

求助各位大佬,我的代码到底哪里出了不妥?

2个回答

把 i=1放在for link in links:的上面
如果不放for循环上面,i每次循环都被初始化为 1 了,i = i+1虽然加了1,但是下一次循环,i又被初始化为1了。
这样不管下载多少张图片 , 因为每次的 i 都为1,也就是所有的图片名字都是1,每次都被替换,最后只保留了最后的1
也就只有一张图片了。

 address="H:\程序语言学习用文件夹\Python\images"+"\\"   #保存地址
路径的斜杠应该用双斜杠


imgresponse = requests.get(link, stream=True)
这里加上print(link)输出下地址对不对


 with open(address+"{0},jpg".format(i) ,"wb") as jpg: 
 否则丢失后缀名
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!