Python图片下载函数报FileNotFoundError但图片已保存,求原因
问题分析:FileNotFoundError但图片已保存的原因
错误核心:路径字符串的转义解析问题
看错误信息里的实际访问路径:
D:\\Lokale schijf\\companyname\\datafiles\\BRANDS\\VDV\\images\\FW2023\x8230711test\\primadonna-lingerie-underwired_bra-deauville-0161811-black-0_3456144.jpg
对比你指定的原始路径:
"D:\Lokale schijf\companyname\datafiles\BRANDS\VDV\images\FW2023\20230711test"
问题出在路径中的\202部分:Python会把字符串里\开头的数字解析为八进制转义字符,八进制的202对应十六进制的0x82(一个不可见的ASCII控制字符),导致原本的\20230711test被错误解析成\x8230711test——这是一个不存在的文件夹,因此触发FileNotFoundError。
为什么图片看起来保存到了指定文件夹?
大概率是你混淆了文件位置:循环中前面的图片写入时,系统自动创建了那个包含转义字符的错误路径文件夹,你看到的“指定文件夹里的图片”可能是之前测试遗留的,而非本次代码运行的结果。
修复方案
解决路径转义问题有三种常用方式:
- 使用原始字符串:在路径前加
r,让Python跳过转义解析:folder_path = r"D:\Lokale schijf\companyname\datafiles\BRANDS\VDV\images\FW2023\20230711test" - 用双反斜杠
\\代替单反斜杠:folder_path = "D:\\Lokale schijf\\companyname\\datafiles\\BRANDS\\VDV\\images\\FW2023\\20230711test" - 用正斜杠
/替代反斜杠:folder_path = "D:/Lokale schijf/companyname/datafiles/BRANDS/VDV/images/FW2023/20230711test"
额外建议:在函数开头添加文件夹检查逻辑,确保目标目录存在,避免类似问题:
import os import requests def get_images(folder_path): # 自动创建目标文件夹(已存在则不报错) os.makedirs(folder_path, exist_ok=True) for urls in list_of_urls: for url in urls: response = requests.get(url) file_name = url.split('/')[-1] file_path = os.path.join(folder_path, file_name) with open(file_path, 'wb') as file: file.write(response.content) folder_path = r"D:\Lokale schijf\companyname\datafiles\BRANDS\VDV\images\FW2023\20230711test" get_images(folder_path)
内容的提问来源于stack exchange,提问作者Ron Kieftenbeld
相关产品推荐
相关产品推荐

