Сначала я соблазню создать словарь регулярных выражений, который вы можете использовать для категоризации вашего имени файла:
import re
f_matcher = { "typeA" : re.compile("date.*A\.gz"),
"typeB" : re.compile("date.*B\.gz"),
"typeC" : re.compile("date.*C\.gz") }
Если вы не уверены в использовании регулярных выражений, попробуйте regex101 , который является отличным учебным ресурсом для этого мощного набора инструментов для сопоставления с образцом.
Затем определите отображение типа в папку:
f_folders = { "typeA" : "nas/folder/A",
"typeB" : "nas/folder/B",
"typeC" : "nas/folder/C" }
Определите функцию для сопоставления:
def match_name(class_d, name, default="typeX"):
for c,r in f_matcher.items():
if r.match(name):
return c
return default
А затем, в вашем цикле, извлеките ваше имя файла и используйте subloop или def для выполнения тегов - и сопоставьте это с вашим предопределенным списком путей:
f_type = match_name(f_matcher, filename)
new_path = f_folders.get(f_type, "/nas/default/")
Наконец, используйте os.path.split
и os.path.join
для восстановления имен файлов, которые вы хотите для своих файлов, а затем либо создайте вызов os, чтобы переместить их с помощью команд os, либо с помощью используемого метода здесь .