如何将爬取的图片保存到当前工作目录以外的指定文件夹?
解决图片保存到当前目录外文件夹的问题
嘿,我来帮你搞定这个路径问题!你之前用../没成功,大概率是因为脚本运行时的工作目录和脚本实际所在目录不一致,或者目标文件夹没提前创建导致的。下面给你两种可靠的实现方法:
方法1:基于脚本位置的绝对路径(推荐)
这种方法不管你在哪里运行脚本,路径都不会出错,非常稳定。步骤如下:
- 导入
os模块处理路径和文件夹操作 - 获取脚本本身所在的目录,以此为基准构造目标路径
- 确保目标文件夹存在(不存在就自动创建)
- 拼接完整的图片保存路径
修改后的代码示例:
import os import base64 from selenium import webdriver # 按需保留,如果你用了selenium # ... 你的爬取逻辑代码 ... base64_image_away = driver.execute_script( "return document.querySelector('.canvas-container[data-field=away] canvas').toDataURL('image/png').substring(21);" ) output_image_away = base64.b64decode(base64_image_away) # 获取当前脚本(players_data.py)所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 示例:把图片保存到**上级目录**的`external_heatmaps`文件夹里 # 你可以按需修改路径,比如想存到D盘就写"D:/saved_images" target_folder = os.path.join(script_dir, '..', 'external_heatmaps') # 自动创建目标文件夹,已存在则跳过(避免报错) os.makedirs(target_folder, exist_ok=True) # 拼接完整的图片保存路径 image_save_path = os.path.join(target_folder, f"image_{away_team}.png") # 写入图片文件 with open(image_save_path, 'wb') as f: f.write(output_image_away)
方法2:确保工作目录正确的相对路径
如果你确定运行脚本时的工作目录就是players_data.py所在的目录(比如在该目录下直接运行python players_data.py),可以直接用相对路径,但要先确认目标文件夹存在:
import os import base64 # ... 爬取逻辑代码 ... output_image_away = base64.b64decode(base64_image_away) # 示例:保存到上级目录的images文件夹 target_folder = "../images" os.makedirs(target_folder, exist_ok=True) with open(f"{target_folder}/image_{away_team}.png", 'wb') as f: f.write(output_image_away)
为什么之前的../没成功?
最常见的原因是:你在非脚本所在目录运行了脚本。比如你在桌面目录运行python Documents/players_data.py,此时当前工作目录是桌面,../指向的是桌面的上级目录,而非脚本所在的Documents目录的上级,自然找不到目标路径。
所以更推荐第一种基于脚本绝对路径的方法,彻底避开工作目录的坑!
内容的提问来源于stack exchange,提问作者vftw
相关产品推荐
相关产品推荐

