Работа с несколькими шаблонами имен файлов в python - PullRequest
0 голосов
/ 15 января 2020

Я изо всех сил пытаюсь собрать пару вещей, поскольку, поскольку у меня есть код, который работает с определенным шаблоном файла (например, 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) и разработать что-то, что обрабатывает их по-другому?

Спасибо,

1 Ответ

1 голос
/ 15 января 2020

Может быть, это?

fname, fext = os.path.split(f)
parts = fname.split("_")
if len(parts) != 3:
    ...     # Handle invalid file name
else:
    filename, identifier, number = parts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...