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.jpg
,065572_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),我需要一个解决方案。如何处理?
答案 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"
希望这会有所帮助