Перемещение файлов в папках в каталог верхнего уровня
Я пытаюсь завершить сценарий для своей работы, который очищает их файловую систему организации. Последняя часть моего сценария должна войти во все папки в данном каталоге и переместить все файлы в каждой папке в каталог. Например:
import os
path = 'C:/User/Tom/Documents'
folders = os.listdir(path)
print(folders)
Допустим, структура папок выглядит следующим образом:
Documents
[________ Folder A
..................[_________ File 1
..................[_________ File 2
[________ Folder B
..................[_________ File 3
..................[_________ File 4
[________ Folder C
..................[_________ File 5
..................[_________ File 6
..................[_________ File 7
Моя цель-каким-то образом войти в каждую папку в разделе "Документы", очистить папки, переместив все файлы на один уровень вверх, не вводя имена папок или файлов. имена, которые должны быть в пути документов, который выглядит следующим образом:
Documents
[________ Folder A
[_________ File 1
[_________ File 2
[________ Folder B
[_________ File 3
[_________ File 4
[________ Folder C
[_________ File 5
[_________ File 6
[_________ File 7
Я новичок в python, и моя единственная мысль о том, как эффективно это сделать, - это набрать много кода, который идет в каждую папку каталога, и шутил.переместить их. Однако это не будет работать для моего приложения, так как скрипт должен быть в состоянии выполнить эту задачу для X количество папок с Y количество файлов и не нужно вводить каждый путь к папке.
Я прошу любого совета по эффективному способу, который я могу пройдитесь по моему списку "папок" и просто переместите файлы из папки в каталог пути.
Извините за длинный пост, я просто хотел быть как можно более подробным о моем вопросе, спасибо!
1 ответ:
Я бы рекомендовал рекурсивный обход снизу вверх с использованием
os.walk
и соответствующим перемещением файлов.import os import shutil doc_path = 'C:/User/Tom/Documents' for root, dirs, files in os.walk(doc_path, topdown=False): for file in files: try: shutil.move(os.path.join(root, file), doc_path) except OSError: pass
Это переместит все в каталог верхнего уровня.