Работа с несколькими шаблонами имен файлов в 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
Другие вопросы по тегам