罗家马德里球迷 2018-11-07 15:02 采纳率: 0%
浏览 1550
已采纳

如何用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条回答 默认 最新

  • 我不喜欢这个世界 2018-11-08 01:39
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大