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

Python使用selenium、requests、Pillow下载图片提示成功但无文件输出

问题描述

参考教程使用Python实现Chrome浏览器图片下载功能,当前处于单张图片下载初步测试阶段:运行代码后控制台会打印Success成功提示,但无论是指定明确的下载存储路径,还是将路径设为空字符串尝试保存到IDE当前工作目录,都无法找到对应的下载图片文件。

原实现代码
import requests
from PIL import Image
from selenium import webdriver
import io

PATH = "/Users/flaviamadau/Desktop/SchoolPython/chromedriver"

wd = webdriver

driver = webdriver.Chrome(executable_path=PATH)

image_url = "https://target.scene7.com/is/image/Target/GUEST_34ac5146-0911-4c3f-ae9f-473d268ad847"
download_paths= "/Users/flaviamadau/Desktop/SchoolPython/fotos"

def download_image(download_path, url, file_name):
    try:
        image_content = requests.get(url).content
        image_file= io.BytesIO(image_content)
        image = Image.open(image_file)
        file_path = download_path + file_name

        with open(file_path, "wb") as f:
            image.save(f, "JPEG")

        print("Success")
    except Exception as e:
        print('Failed -', e)

download_image(download_paths, image_url, "test.jpg")
排查思路与修复方案

核心问题定位

找不到文件的核心原因是路径拼接错误:代码中直接对文件夹路径和文件名字符串做硬拼接,没有补充路径分隔符,最终生成的文件实际路径为/Users/flaviamadau/Desktop/SchoolPython/fotostest.jpg——文件被存到了SchoolPython目录下,文件名为fotostest.jpg,和预期的「fotos文件夹内的test.jpg」位置完全不符。
除此之外还有三个容易引发异常的隐患:

  • 未校验目标存储文件夹是否存在:如果fotos文件夹没有提前手动创建,文件写入时会触发路径不存在的报错
  • 存在大量冗余代码:导入并初始化了selenium的Chrome驱动,但全程没有使用,既拖慢运行速度,也可能因为驱动启动带来不必要的路径干扰
  • 未打印文件实际存储路径:靠IDE默认工作目录判断存储位置很容易出现偏差,不同IDE的默认工作目录设置可能和预期不一致

修复后代码

import os
import requests
from PIL import Image
import io

image_url = "https://target.scene7.com/is/image/Target/GUEST_34ac5146-0911-4c3f-ae9f-473d268ad847"
# 目标存储文件夹
download_dir = "/Users/flaviamadau/Desktop/SchoolPython/fotos"

def download_image(download_path, url, file_name):
    try:
        # 自动创建不存在的目标文件夹,已存在时不报错
        os.makedirs(download_path, exist_ok=True)
        image_content = requests.get(url).content
        image_file= io.BytesIO(image_content)
        image = Image.open(image_file)
        # 用标准方法拼接路径,自动适配不同系统的路径分隔符
        file_path = os.path.join(download_path, file_name)

        with open(file_path, "wb") as f:
            image.save(f, "JPEG")
        # 打印文件绝对存储路径,方便直接定位
        print(f"Success, file saved to: {os.path.abspath(file_path)}")
    except Exception as e:
        print('Failed -', e)

download_image(download_dir, image_url, "test.jpg")

额外排查点

如果运行修复后代码还是找不到文件,直接复制控制台打印的绝对路径,在系统文件管理器中直接跳转定位即可,不要手动逐层翻找目录避免遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:24:26