You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用urllib或shutil将网络图片下载到指定本地目录

解答

你当前用的requests+shutil的下载方案完全支持自定义存储路径,不需要切换到urllib.urlretrieve实现,核心调整逻辑非常简单:给文件写入函数传入拼接好的目标路径,同时提前确保目标目录存在即可。

具体修改步骤

  • 先定义你想要存储图片的目标目录路径
  • 用os.makedirs()自动创建不存在的目录,避免写入时触发路径不存在的报错
  • 用os.path.join()把目录路径和文件名拼接成跨系统兼容的完整存储路径,传给open()函数即可

修改后的可运行代码如下:

import requests
import shutil
import os

url = "https://www.lamborghini.com/sites/it-en/files/DAM/lamborghini/facelift_2019/homepage/families-gallery/2022/04_12/family_chooser_tecnica_m.png"

# 替换成你自己的目标存储目录即可,支持相对路径/绝对路径
# Windows路径示例:r"D:\local_pics\car_images"
# Mac/Linux路径示例:"/home/xxx/pics/car_images"
target_save_dir = "./downloaded_car_images"
# 自动创建目录,目录已存在时不会抛出异常
os.makedirs(target_save_dir, exist_ok=True)

file_name = input("save image as :")
# 注:原代码硬编码加.jpg后缀和示例url的png格式不匹配,可根据实际资源类型调整后缀
file_name += ".png"
# 拼接得到完整的文件存储路径
full_file_path = os.path.join(target_save_dir, file_name)

res = requests.get(url, stream=True)
if res.ok:
    with open(full_file_path, "wb") as f:
        shutil.copyfileobj(res.raw, f)
    print("image successfully downloaded to: ", full_file_path)
else:
    print("Download failed: status code {}\n{}".format(res.status_code, res.text))

注意事项

  • 写Windows本地路径时,直接复制资源管理器的带反斜杠\的路径会触发字符串转义问题,要么把所有反斜杠替换为正斜杠/,要么在路径字符串前加r标记为原生字符串
  • 尽量用os.path.join()拼接路径,不要手动拼接斜杠,该方法会自动适配Windows、macOS、Linux不同系统的路径分隔符,避免跨系统运行报错
  • 这个路径指定逻辑同样适用于你贴的urllib原生写文件的方案,只要把完整路径传给open()即可,不是只有urlretrieve支持自定义存储位置

内容的提问来源于stack exchange,提问作者Sloth99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:12:23