Python 如何在目录中的多个相同文件名中仅获取第一个文件名?
实际上,我正在读取文件名并获取与某个目录中的前缀值=065572匹配的文件。所以我在同一个目录中有如下的文件名Python 如何在目录中的多个相同文件名中仅获取第一个文件名?,python,python-3.x,Python,Python 3.x,实际上,我正在读取文件名并获取与某个目录中的前缀值=065572匹配的文件。所以我在同一个目录中有如下的文件名 - image_read -065572_sometext.png -065572_file1_sometext_001.jpg -065572_file2_sometext_002.jpg 有两种情况 1.我只想取第一个文件名065572_sometext.png。我在@irusion comment中找到了这个问题的解决方案。 2.我想取另外两个文件名06
- image_read
-065572_sometext.png
-065572_file1_sometext_001.jpg
-065572_file2_sometext_002.jpg
有两种情况
1.我只想取第一个文件名065572_sometext.png
。我在@irusion comment中找到了这个问题的解决方案。
2.我想取另外两个文件名<代码>065572_文件1_sometext_001.jpg,065572_文件2_sometext_002.jpg
。有人能帮我解决这个案子吗
对于案例(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)
对于案例(2),我需要一个解决方案。如何处理它?那么,您想获取
image\u read
文件夹中的第一个文件名,即“065572\u 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)
根据,如果在目录中找不到任何文件,在我们的例子中,image\u read
,它将抛出StopIteration
异常。因此,要么处理它,要么如上所述提供默认值
这意味着如果在image\u read
文件夹中找不到文件,它将返回“找不到文件”
,否则它将返回“065572\u sometext.png”
希望这有助于不太稳定,但如果所有所需文件名的长度都相同,
…如果len(x)filename\u list[0]
访问列表的第一个元素,您可以在列表comp中只包含长度小于某个长度的文件名。请解释一下“此处的默认值”用我的代码或者你能粘贴一些例子吗?我已经对答案做了修改,希望现在能有所帮助…非常感谢。现在它的工作和预期的一样好。我更改了我的代码,比如find_filename=[下一步((os.path.basename(x)for x in(glob.iglob('/home/username'+'/**/'+value+'*',recursive=True))),default)]
假设如果我想得到没有第一个文件名的其他文件名,如何处理?所有_文件=[f for f for f in os.listdir(path)if isfile(join(path,f))]