如何只获取目录中多个相同文件名中的第一个文件名?

时间:2018-11-06 17:26:38

标签: python python-3.x

Baiscally,我正在读取文件名并获取与某些目录中的前缀值= 065572匹配的文件。因此,我在同一目录中具有如下文件名。

- image_read
    -065572_sometext.png
    -065572_file1_sometext_001.jpg
    -065572_file2_sometext_002.jpg

有两种情况 1.我只想取第一个文件名。 065572_sometext.png。我在@illusion评论中得到了解决方案。 2.我要使用其他两个文件名。 065572_file1_sometext_001.jpg065572_file2_sometext_002.jpg。谁能帮我解决这个问题。

对于case(1),由以下代码处理

default =''
find_filename = [next((os.path.basename(x) for x in (glob.iglob('/home/username' + '/**/' + value + '*', recursive=True))),default)]
filename = ", ".join(find_filename)
filename_list.append(filename)

对于case(2),我需要一个解决方案。如何处理?

1 个答案:

答案 0 :(得分:0)

因此,您想获取image_read文件夹中存在的第一个文件的名称,即"065572_sometext.png",对吗? 为此,只需编写以下代码:

default = "No files found" #value to return if no file found
first_file = next((join(path_to_image_read, f) for f in os.listdir(path) if isfile(join(path, f))), default)

根据this link,如果在目录中找不到文件(在我们的情况下为image_read,它将抛出StopIteration异常。因此,要么处理它,要么提供如上所述的默认值。

这意味着如果在image_read文件夹中找不到文件,它将返回"No files found",否则将返回"065572_sometext.png"

希望这会有所帮助