Как разделить большую папку на несколько маленьких?
У меня есть папка с примерно 100,000 файлами. Мне нужно создать кучу папок и поместить в них по 5,000 файлов. Как я могу это сделать?
Ответы (1 шт):
Автор решения: Gh0sTG0
→ Ссылка
Вот код, если чего не понятно спрашивай:
import os
from math import ceil, floor
folder_address = "адрес_до_папки" # адрес папки, добывай как тебе удобно
directory = os.fsencode(folder_address)
i = 0
files_in_folder = 5000 # меняешь 5000 на любое число сколько файлов в папке тебе надо
num_of_files = len([name for name in os.listdir(directory) if os.path.isfile(os.path.join(directory, name))]) # работать будет чисто с файлами, вычислил их количество в папке, игнорирую наличие каких либо папок
for x in range(ceil(num_of_files / files_in_folder)):
path = folder_address + "\\" + str(x + 1) # папки будут называться цифрами, от 1 до количество файлов / 5000 с округлением в большую сторону
if not os.path.exists(path):
os.mkdir(path)
files = (file for file in os.listdir(directory)
if os.path.isfile(os.path.join(directory, file))) # собственно, я получил адреса всех файлов
for file in files:
# print("Делаю файл № " + str(i + 1)) # если хочешь спам сообщениями разкомментируй
file_name = os.fsdecode(file)
file_path = os.path.join(folder_address, file_name)
new_file_path = os.path.join(folder_address, str(floor(i / files_in_folder) + 1), file_name)
os.rename(file_path, new_file_path)
i += 1
print("Creating Done!")