PIL抛出FileNotFoundError:图片切片代码路径问题排查
错误原因
你遇到的问题和字符串引号无关,核心是路径缺失:
- Tkinter文件选择框返回的是图片的完整绝对路径(比如
D:\photos\CAO7.jpg) os.path.basename(file)只会截取最后的纯文件名(也就是CAO7.jpg)- 当你用这个纯文件名打开文件时,Python会在当前程序的工作目录(而非图片所在文件夹)中查找,自然找不到目标文件,因此抛出文件不存在的异常。
解决办法
有两种简单的修复方式:
方式1:直接使用完整路径
完全不需要提取文件名,直接用Tkinter返回的完整路径打开图片:
def Analysis(file): # 错误写法:os.path.basename(file)丢失了路径 # img = Image.open(os.path.basename(file)) # 正确写法:直接使用完整路径 img = Image.open(file) # 后续图片切片逻辑...
方式2:拼接路径与文件名(需单独处理文件名时)
如果你的业务逻辑必须用到纯文件名,那就拆分路径后重新拼接成完整路径:
import os def Analysis(file): # 拆分出文件所在目录和纯文件名 dir_path, file_name = os.path.split(file) # 重新拼接为完整路径 full_path = os.path.join(dir_path, file_name) # 用完整路径打开图片 img = Image.open(full_path) # 后续图片切片逻辑...
额外验证
可以在代码里打印当前工作目录,确认和图片所在目录是否一致:
import os print(os.getcwd()) # 输出当前程序的工作目录
内容的提问来源于stack exchange,提问作者Master03 Skywalker
相关产品推荐
相关产品推荐

