Я бы хотел рекурсивно искать в каталогах "project" папку "Feedback Report", и если в этой папке больше нет подкаталогов, я бы хотел обработать файлы определенным образом.
После того, как мы достигли целевого каталога, я хочу найти последний отчет report.xlsx в этом каталоге (который будет содержать много предыдущих версий)
данные действительно огромны и противоречивы в своей структуре каталогов. Я считаю, что следующий алгоритм должен приблизить меня к желаемому поведению, но все еще не уверен. Я перепробовал несколько скриптов с потрепанным кодом, чтобы преобразовать их в иерархию путей json, а затем проанализировать их, но несоответствие делает код действительно огромным и не читаемым
Путь к файлу важен.
Мой алгоритм, который я хотел бы реализовать:
dictionary_of_files_paths = {}
def recursive_traverse(path):
//not sure if this is a right base case
if(path.isdir):
if re.match(dir_name, *eedback*port*) and dir has no sub directory:
process(path,files)
return
for contents in os.listdir(path):
recursive_traverse(os.path.join(path, contents))
return
def process(path,files):
files.filter(filter files only with xlsx)
files.filter(filter files only that have *eedback*port* in it)
files.filter(os.path.getmtime > 2016)
files.sort(key=lambda x:os.path.getmtime(x))
reversed(files)
dictionary_of_files_paths[path] = files[0]
recursive_traverse("T:\\Something\\Something\\Projects")
Мне нужно руководство, прежде чем я на самом деле реализую, и мне нужно проверить, правильно ли это.
Есть еще один фрагмент, который я получил для иерархии путей от stackoverflow, который
try:
for contents in os.listdir(path):
recursive_traverse(os.path.join(path, contents))
except OSError as e:
if e.errno != errno.ENOTDIR:
raise
//file