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

问题描述 投票:0回答:1

我正在努力将两件事放在一起,因为我已经在一起使用了可以处理特定文件模式(即FILENAME_IDENTIFIER_NUMBER.filetype)的代码,所以我有一些旧文件与该特定文件名结构不匹配,当我尝试使用混合名称时出现错误。

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

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

filename_identifier_number.extensionfilename_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),并开发出以其他方式处理它们的东西?

谢谢,

我正在努力将两件事放在一起,因为我已经在一起使用了可以处理特定文件模式的代码(即FILENAME_IDENTIFIER_NUMBER.filetype),所以我有一些旧文件可以执行...]]

python filenames glob fnmatch
1个回答
1
投票

也许这吗?

fname, fext = os.path.split(f)
parts = fname.split("_")
if len(parts) != 3:
    ...     # Handle invalid file name
else:
    filename, identifier, number = parts
© www.soinside.com 2019 - 2024. All rights reserved.