如何将图片保存至指定目录?已保存文件为空问题求助
解决保存图片至目录后文件为空的问题
嘿,我看到你遇到的问题了——图片确实存到了指定路径,但打开时提示文件为空,这问题出在你的代码里两个关键细节上:
问题分析
- 你调用了
system.file.readFileAsBytes(image)读取图片的二进制数据,但完全没有把这些数据写入到新文件中,相当于只完成了“读取”这一步,却没执行“写入”操作; - 你用
open(saved_path, "w")打开文件,这是文本写入模式,而图片属于二进制文件,必须使用二进制写入模式"wb",否则不仅写不进正确的内容,还可能损坏文件结构。
修正后的代码
import os from os.path import join as pjoin images = system.file.openFiles() new_dir = r'O:\TestImages' # 加r前缀避免Windows路径的反斜杠被解析为转义字符 # 确保目标目录存在,不存在则创建(exist_ok=True避免目录已存在时报错) os.makedirs(new_dir, exist_ok=True) for image in images: # 读取图片字节并存储到变量中 image_bytes = system.file.readFileAsBytes(image) image_name = os.path.basename(image) saved_path = pjoin(new_dir, image_name) # 使用with语句以二进制写入模式打开文件,并写入字节数据 with open(saved_path, "wb") as f: f.write(image_bytes) print(saved_path) system.db.runPrepUpdate("INSERT INTO ImageManagement (ImageName) VALUES (?)", [image_name])
关键改动说明
- 给Windows路径添加
r前缀:将路径转为原始字符串,防止反斜杠被当成转义字符(比如\T可能被解析为制表符); - 新增
os.makedirs:确保目标目录存在,如果目录不存在会自动创建,避免因路径不存在导致的保存失败; - 使用
with语句操作文件:这是Python中处理文件的最佳实践,会自动帮你关闭文件,避免资源泄漏; - 改用
wb模式写入:二进制写入模式才能正确保存图片这类非文本文件,同时把之前读取的image_bytes写入到文件中,这才是让文件有内容的核心步骤。
内容的提问来源于stack exchange,提问作者Connor Mangean
相关产品推荐
相关产品推荐

