Работа с несколькими шаблонами имен файлов в Python
Я изо всех сил пытаюсь собрать пару вещей вместе, поскольку, поскольку у меня есть код, который работает с определенным шаблоном файла (например, FILENAME_IDENTIFIER_NUMBER.filetype), у меня есть некоторые старые файлы, которые не соответствуют этой конкретной структуре имени файла, которые бросают up ошибки, когда я пытаюсь работать со смешанными именами.
есть ли способ поиска файлов, не соответствующих этой файловой структуре? Я пробовал использовать glob и не могу найти совпадения. fnmatch при использовании с _. предоставит мне оба варианта, так как подстановочный знак в любом случае предположительно принимает все, что находится после первого подчеркивания.
например, в нескольких каталогах у меня будут такие имена файлов, как:
имя_файла_идентификатор_номер. расширение имя_файла_номер.расширение
где я бы обычно разделил вышеперечисленное на:
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), и разработать что-то, что обрабатывает их другим способом?
Благодарность,
1 ответ
Может быть, это?
fname, fext = os.path.split(f)
parts = fname.split("_")
if len(parts) != 3:
... # Handle invalid file name
else:
filename, identifier, number = parts