我的训练数据集中的隐藏文件使 tensorflow 返回“未知的图像文件格式需要 JPEG、PNG、GIF、BMP 之一”

问题描述

我有张量流模型,在训练的第一部分期间,它会一直工作到大约中点 (735/2201 [==========>.......... ..........]) 然后返回标题中的错误

首先,我制作了一个脚本来删除该目录中所有不以 .jpg 结尾但没有任何变化的文件

import os
for file in os.listdir(path):
    if not file.endswith('.jpg'):
        os.remove(os.path.join(path,file))

然后我打开我的 macs bash 并列出目录中的所有文件以查看任何隐藏文件,但它们都只是 jpg。

编辑:

nessuno 的回答是正确的,但您必须遍历绝对路径而不仅仅是文件名,这样的事情应该可以工作

import os
import imghdr
#define your path
path = '' 

files = os.listdir(path)


for file in files:
    format = imghdr.what(os.path.join(path,file))
    if format != 'jpeg':
        os.remove(os.path.join(path,file))

我最终删除了 5 个不是 jpeg 的文件

解决方法

您的 path 中有一些文件具有 .jpg 扩展名,但它包含不同的文件格式。

您可以使用 imghdr 库(Python 本身附带的:https://docs.python.org/3/library/imghdr.html)并检查标头是否等于 jpeg 并在这种情况下删除图像。

简而言之,您可以将脚本更改为:

import os
import imghdr

for file in os.listdir(path):
    if imghdr.what(file) != 'jpeg':
        os.remove(os.path.join(path,file))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...