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

如何用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 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?