• XSS.stack #1 – первый литературный журнал от юзеров форума

прочее Папку с 14 М файлами разбить по 100к

NPSH

(L3) cache
Пользователь
Регистрация
15.05.2020
Сообщения
188
Реакции
109
Гарант сделки
1
В папке больше 14 миллионов файлов, не могу сообразить, как разбить на 140 директорий по 100 тысяч файлов.

Желательно не Юниксовское решение кто-то может подсказать,?
Гуглом так сразу и не нашел
 
 
Не осилил скрипт.
Сам автор пишет, что не очень он работает.
Программ так понимаю для такой простой, а как выснилось, сложной задачи не существует.

Буду пробовать в тотал командере выделением и перемещением
 
В папке больше 14 миллионов файлов, не могу сообразить, как разбить на 140 директорий по 100 тысяч файлов.

Желательно не Юниксовское решение кто-то может подсказать,?
Гуглом так сразу и не нашел
На петоне напиши, делов то на полчаса. Даже чат жымпиты справится, скорей всего. Чтобы не зависало на начальном этапе листинга миллионов файлов, передай ему от меня, чтобы использовал os.scandir().
 
На петоне напиши, делов то на полчаса.
Ну напеши. Думаешь если бы он мог, то шел сюда и создавал темы?
Для тебя делов пол часа - уже прошло больше. Где код? Помощник херов.
Даже чат жымпиты справится
Уверен? был бы у него ваш ебучий гпт он бы спросил. Почему ты этого не сделал и не скинул сюда вместо ответа?
передай ему от меня, чтобы использовал os.scandir(
Самый лучший совет. Почему не pathlib, glob?

Желаю, что бы вам херовым умникам всю жизть так же помогали. Нахер вы лезите писать в темы по которым не можете помочь? Еще и после критики в вашу сторону вы не разобравшись идете срать "в ответочку". Деградация общества.

admin
Считаю, что на техническом форуме вобще не должно быть этих "спросиуГПТйоптанах"-ов.
Не разбираешься - не лезь в тему. Полез - получи диз за идиотизм.
 
Ну напеши. Думаешь если бы он мог, то шел сюда и создавал темы?
Для тебя делов пол часа - уже прошло больше. Где код? Помощник херов.
Ты бы у бойфренда своей жены лучше так требовал приставку купить.

Уверен? был бы у него ваш ебучий гпт он бы спросил. Почему ты этого не сделал и не скинул сюда вместо ответа?
Очевидно, что я на самом деле спросил, но тестировать-отлаживать мне было лень, а позориться и публично обсираться, как ты, я не люблю.

Самый лучший совет. Почему не pathlib, glob?

Желаю, что бы вам херовым умникам всю жизть так же помогали. Нахер вы лезите писать в темы по которым не можете помочь? Еще и после критики в вашу сторону вы не разобравшись идете срать "в ответочку". Деградация общества.
Ты бухой что-ли тут пишешь? :) Ты в той теме написал, что сберы должны были разобраться в чём? Они то мошенников в глаза не видели, их видел только дед. За это я поставил минус. Пипец тут на ровном месте драма разыгрывается. :)

зы: Попозже скину скрипт делающий то, что просил тс, если ещё будет надо.
 
Последнее редактирование:
https://xss.pro/threads/94037/
 
Пока не научишся питонить примитивные скрипты, будет постоянно жопаболь с мелочами. Инвестируй время в прохождение базового курса - оно действительно того стоит(в курсе что нет времени и все такое, а кому сейчас легко).
Неравнодушный Гамадрил против скандального Ёжика, драма, алкоголь, деградация общества обитателей зоопарка, хэккирное бытие.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
смотри в сторону сплиттеров емайлов - подобный софт у меня был, когда-то очень давно, когда я занимался спамом, под винду правда софт.

upd: перечитал внимательней, тебе нужно не 14лям из 1 файла разбить по 100к - так что сплиттер тебе тут не поможет.
 
Вот скрипт делающий перекладку файлов из текущей директории в поддиректории. Надо настроить сколько файлов ты хочешь, чтобы было в 1 поддиректории и префикс.
========== movf.py ==========
Python:
import os
import shutil

# Get the iterator of os.DirEntry objects in the current directory
files = os.scandir('.')

# Initialize a counter and a subdirectory name
filesPerDir = 1000
prefix = 'subdir'
subdir = 0
subdr = f'{prefix}{int(subdir)}'
os.mkdir(subdr)
print("Dir: " + subdr)
counter = 0

# Loop through the files
for file in files:
    if not file.is_file():
        continue
    if 'movf.py' == file.name:
        continue
    # Move the file to the subdirectory using shutil.move()
    shutil.move(file.path, subdr)
    # Increment the counter
    counter += 1
    # If the counter reaches filesPerDir, create a new subdirectory and reset the counter
    if counter == filesPerDir:
        subdir += 1
        subdr = f'{prefix}{int(subdir)}'
        print("Dir: " + subdr)
        os.mkdir(subdr)
        counter = 0
Написала его реально нейронка (бинг), я только выправил баги, поэтому он похож на код старшеклассника, но должен работать. Вот скрипт для проверки, советую перед "боевым" запуском на 14 миллионах файлах, сначала попробовать его, он просто создаёт энное количество пустых файлов для первого скрипта:
======== test.py ========
Код:
for i in range(140000):
    open(f'file{i}.txt', 'a').close()
 
Добрый день.
Стало интересно попробовать решить вашу задачу. Но увы я не программист и в ваши кодерские задачи не умею, по этому обратился за помощью к chatGPT, тот набросал простенький код
Python:
import os
import shutil


source_folder = r'C:\Users\admin\Desktop\text_files' 
target_base_folder = r'C:\Users\admin\Desktop\result'
files_per_folder = 100000


# Получаем список файлов в исходной папке
file_list = os.listdir(source_folder)


# Разбиваем список файлов на части по files_per_folder
chunks = [file_list[i:i + files_per_folder] for i in range(0, len(file_list), files_per_folder)]


# Создаем целевые папки и перемещаем файлы
for i, chunk in enumerate(chunks):
    target_folder = os.path.join(target_base_folder, f'подпапка_{i}')
    os.makedirs(target_folder, exist_ok=True)
    for file_name in chunk:
        source_path = os.path.join(source_folder, file_name)
        target_path = os.path.join(target_folder, file_name)
        shutil.move(source_path, target_path)


print("Готово!")

Вам остается только заменить:
source_folder = r'C:\Users\admin\Desktop\text_files'
target_base_folder = r'C:\Users\admin\Desktop\result'
На свои значения, source_folder = r'тут ваши дериктории' думаю сможете разобратся.

ну и вот простенькое видео как оно работает:


Только учитывайте что файлы переносятся из папки в папку, а не копируются, и наверное есть вероятность их повредить(я не знаю я не программист)
 
В павершелл можно примерно так (советую потестить перед использованием):

Код:
$src_dir="C:\src_many_files\";$dest_dir="C:\dest_dir\";$max_files=100000;$i=0;$j=0;(cmd /c "dir /B $src_dir" |% {if($i -eq 0){$dest_sub_dir="$dest_dir\$j";md -Force $dest_sub_dir;Write-Host $dest_sub_dir;$i=$max_files;$j++;};$i--;cp "$src_dir\$_" -Destination "$dest_sub_dir";})

$src_dir - Исходная директория
$dest_dir - Куда копировать, здесь будут создаваться под-директории
$max_files - Количество файлов на под-директорию
 
В павершелл можно примерно так (советую потестить перед использованием):

Код:
$src_dir="C:\src_many_files\";$dest_dir="C:\dest_dir\";$max_files=100000;$i=0;$j=0;(cmd /c "dir /B $src_dir" |% {if($i -eq 0){$dest_sub_dir="$dest_dir\$j";md -Force $dest_sub_dir;Write-Host $dest_sub_dir;$i=$max_files;$j++;};$i--;cp "$src_dir\$_" -Destination "$dest_sub_dir";})

$src_dir - Исходная директория
$dest_dir - Куда копировать, здесь будут создаваться под-директории
$max_files - Количество файлов на под-директорию
Nice! Love to see there are other people who write 1000+ character long pwsh one-liners! =)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх