Я пытаюсь реорганизовать большое количество файлов PDF (3 миллиона файлов, средний размер файла 300 КБ). В настоящее время файлы хранятся в произвольно названных папках, но я хочу упорядочить их по имени файла. Имена файлов имеют целые числа 8-ди git, например, 12345678.pdf
. В настоящее время файлы хранятся следующим образом
/old/a/12345678.pdf
/old/a/12345679.pdf
/old/b/22345679.pdf
Я хочу, чтобы они сохранялись следующим образом
/new/12/345/12345678.pdf
/new/12/345/12345679.pdf
/new/22/345/22345679.pdf
Я подумал, что это простая задача с использованием shutil:
from pathlib import Path
import shutil
for path_old in Path('old').rglob('*.pdf'):
r = int(path_old.stem)
path_new = '/new/'+str(r// 1000**2)+'/'+str(r // 1000 % 1000)+'/'+path_old.name
shutil.move(str(path_old),path_new)
К сожалению, это занимает вечность. Мой сценарий перемещает только ~ 15 файлов в секунду, что означает, что для его завершения потребуются дни.
Я не совсем уверен, является ли это проблемой Python / shutil или более общей проблемой ввода-вывода - извините, если я поставил вопрос не на место. Я открыт для любого типа решения, которое делает этот процесс быстрее.