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

如何用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条)

报告相同问题?

悬赏问题

  • ¥15 ssh登录页面的问题
  • ¥60 渗透一个指定银行app,拿到客户信息,需要什么级别
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥15 stm32 串口通讯过程中的问题
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问