在 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
我正在努力把一些东西放在一起,因为我有一个代码可以与特定的文件模式一起工作(即 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