我正在努力将两件事放在一起,因为我已经在一起使用了可以处理特定文件模式(即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),所以我有一些旧文件可以执行...]]
也许这吗?
fname, fext = os.path.split(f)
parts = fname.split("_")
if len(parts) != 3:
... # Handle invalid file name
else:
filename, identifier, number = parts