Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在目录中的多个相同文件名中仅获取第一个文件名?_Python_Python 3.x - Fatal编程技术网

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

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

实际上,我正在读取文件名并获取与某个目录中的前缀值=065572匹配的文件。所以我在同一个目录中有如下的文件名

- 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))]