从CSV读取链接下载图片时出现list无decode属性错误的解决方法
问题解决:从CSV读取链接下载图片时的AttributeError错误
错误原因
csv.reader读取CSV文件后,返回的每一行数据是一个列表对象(哪怕每行只有一个链接,也会被封装成单元素列表)。而wget.download()的第一个参数要求传入字符串类型的URL,直接传入列表就会触发'list' object has no attribute 'decode'错误——底层的URL解析逻辑尝试对列表调用decode()方法,而列表没有这个属性。
修复后的代码
import csv import wget # 读取CSV文件 with open('__memes_magic_thumbnails.csv', newline='') as csvfile: data = list(csv.reader(csvfile)) # 若CSV有表头,取消下面一行注释跳过第一行 # data = data[1:] k = 0 for link in data: print(k) # 取每行的第一个元素作为URL(假设每行只有一个链接) img_url = link[0] # 动态生成文件名,避免下载的图片互相覆盖 save_path = f"vid/logo_{k}.jpg" wget.download(img_url, save_path) k += 1 print("success")
关键修改点
- 提取实际URL:用
link[0]获取单元素列表里的字符串链接,满足wget.download()的参数类型要求 - 避免文件覆盖:原代码所有图片都存为
logo.jpg会导致后续文件覆盖之前的,改成logo_{k}.jpg可保留所有下载的图片 - 可选跳过表头:如果你的CSV第一行是表头(比如"thumbnail_url"),取消
data = data[1:]的注释即可跳过表头行
内容的提问来源于stack exchange,提问作者Abhishek Patil
相关产品推荐
相关产品推荐

