遍历目录图片并切片时遭遇FileNotFoundError问题求助
排查文件存在却触发FileNotFoundError的常见原因
嘿,这种“明明文件就在目录里,程序却说找不到”的问题真的很挠头,我来帮你捋捋最可能的几个原因:
当前工作目录与图片目录不匹配
很多时候是因为你只获取了文件名(比如用os.listdir()拿到'45678.png'),但直接用这个文件名打开时,脚本的当前工作目录并不是图片所在的目录。解决方法很简单:用os.path.join()把目录路径和文件名拼接成完整路径,比如:import os img_dir = "/path/to/your/images" for filename in os.listdir(img_dir): full_path = os.path.join(img_dir, filename) if os.path.isfile(full_path): # 在这里处理图片切片 with open(full_path, 'rb') as f: # 你的切片逻辑 pass文件名包含隐藏特殊字符
有时候文件名看起来是45678.png,但实际可能藏着空格、制表符,或者全角/半角字符混淆(比如把英文.写成了中文。)。你可以在代码里打印文件名的原始表示来排查:print(repr(filename)) # 会显示出所有隐藏字符,比如'45678.png\n'或者'45678.png'也可以在终端里用
ls -l(Linux/macOS)或dir /x(Windows)查看文件的真实名称。文件权限或临时占用问题
虽然报错是“找不到文件”,但极少数情况下,脚本没有该文件的读取权限,或者文件正被其他程序占用/临时锁定,也会触发类似错误。你可以手动检查文件的读写权限,或者暂时关闭其他可能访问该文件的程序再试。遍历过程中文件被意外修改
如果遍历目录的同时,有其他工具(比如同步软件、文件清理工具)修改或删除了这个文件,也会出现这种情况。不过这种概率比较低,可以暂时排除。
对了,要是能把你的完整代码贴出来,我能更精准地定位到具体问题哦~
内容的提问来源于stack exchange,提问作者sgmiriuka
相关产品推荐
相关产品推荐

