使用 glob 读取目录中的图像文件名称前的隐藏点下划线 ._

Hidden dot underscore ._ before name of image files in a directory while reading them using glob

我正在尝试从目录中读取图像。 该目录包含名为 like-

的图像
person1_bacteria_1.jpeg
person1_bacteria_2.jpeg
person2_bacteria_3.jpeg

我正在尝试使用 glob 函数抓取这些图像。

images = images_directory.glob('*.jpeg')

问题是,当我打印刚刚阅读的文件的目录时,我发现有些文件前面有点下划线(._)。

例如-

dir/._person1_bacteria_2.jpeg

我再三检查目录下的图片文件,都没有图片名前面带._的。

如何避免读取名称前面有点下划线 (._) 的文件?

我在 运行 一台 windows 机器上。

我认为这些文件只是缩略图文件。如果您查看 os.path.getsize(文件名),您可能可以证实这个假设。

您看不到这些文件的原因是它们可能被标记为隐藏文件。 尝试配置您的 windows 资源管理器,使其显示所有文件。 ( https://support.microsoft.com/en-us/help/14201/windows-show-hidden-files )

如果 glob.glob 产生了带有意外文件名的结果,您可以使用带有条件过滤器的理解列表使用以下代码过滤它们

import os
import glob
images = glob.glob(os.path.join(os.getcwd(), '*.jpeg'))
images = [image for image in images if not os.path.basename(image).startswith('._')] 

如果目录包含以圆点开头的文件won’t be matched by default。 globe returns 一个列表,您可以编写此代码来添加普通文件和隐藏文件:

import glob
images = glob.glob('*.jpeg') + glob.glob('.*.jpeg')

UPDATE:如果您想排除以 ._ 开头的文件,您可以使用此模式:

images = glob.glob("[!._]*.jpeg")