在 python 中使用多个文件名模式

Working with multiple filename patterns in python

我正在努力把一些东西放在一起,因为我有一个代码可以与特定的文件模式一起工作(即 FILENAME_IDENTIFIER_NUMBER.filetype)我有一些不匹配的旧文件当我尝试使用混合名称时,这个特定的文件名结构会抛出错误。

有什么方法可以搜索与此文件结构不匹配的文件?我试过使用 glob 但无法匹配。与 _ 一起使用时的 fnmatch。会给我两个选项,因为通配符可能会接受第一个下划线之后的任何内容。

例如,我将在多个目录中拥有如下文件名:

filename_identifier_number.extension filename_number.extension

我通常将上面的内容拆分为:

for f in files:
filepath = os.path.join(subdir,f)
        fname,fext = os.path.split(f)
        filename,identifier,number = fname.split("_")

这会起作用,但显然当文件名中只有一个下划线时我会收到错误消息。

我可以忽略这个错误吗? (我试过以下):

try:
print(filename)
except ValueError:
pass

但是这不起作用。

或者有什么方法可以搜索任何与我需要的格式不匹配的文件名 (filename_identifier_number) 并开发以另一种方式处理它们的东西?

谢谢,

也许是这个?

fname, fext = os.path.split(f)
parts = fname.split("_")
if len(parts) != 3:
    ...     # Handle invalid file name
else:
    filename, identifier, number = parts