Вопрос или проблема
в папке находятся файлы от file1
до fileX
. X иногда варьируется от file1
до file21
, а иногда от file1
до file55
. Как запустить скрипт или однострочную команду для создания 4 групп (A-D) / 4 списков filegroupA.txt
, filegroupB.txt
, filegroupC.txt
, filegroupD.txt
, при этом имена файлов должны быть выбраны случайным образом и не отсортированы в .txt-файлы.
filegroupA.txt
file2
file18
file7
file13
file4
...
filegroupB.txt
…
редактировать:
в названиях нет специальных символов.
все имена имеют одну и ту же схему: fileX и fileXX.
подкаталогов тоже нет.
минимальный выход для файла группы X должен составлять 4.
никогда не бывает меньше 20 файлов fileXX.
использование заглавных букв A-D не является строгим требованием, это только для лучшего восприятия, но не обязательная функция.
Ответ или решение
Для выбора случайных файлов из указанной папки и их группировки в текстовые файлы, мы можем использовать простой скрипт на Python. Данный скрипт будет находить файлы в указанном диапазоне (например, от file1
до fileX
), случайным образом распределять их по четырем группам и записывать результаты в отдельные текстовые файлы.
Вот пример такого скрипта:
import os
import random
# Определите путь к директории, содержащей файлы
directory = 'путь/к/вашей/директории' # Укажите здесь ваш путь
# Определите диапазон файлов
min_file_num = 1
max_file_num = 55 # Например, до file55
file_list = [f'file{i}' for i in range(min_file_num, max_file_num + 1)]
# Перемешайте список файлов случайным образом
random.shuffle(file_list)
# Разделите на четыре группы
group_size = max(len(file_list) // 4, 4) # Минимальная группа должна содержать как минимум 4 файла
groupA = file_list[:group_size]
groupB = file_list[group_size:2 * group_size]
groupC = file_list[2 * group_size:3 * group_size]
groupD = file_list[3 * group_size:]
# Запись групп в текстовые файлы
with open(os.path.join(directory, 'filegroupA.txt'), 'w') as f:
f.write('\n'.join(groupA))
with open(os.path.join(directory, 'filegroupB.txt'), 'w') as f:
f.write('\n'.join(groupB))
with open(os.path.join(directory, 'filegroupC.txt'), 'w') as f:
f.write('\n'.join(groupC))
with open(os.path.join(directory, 'filegroupD.txt'), 'w') as f:
f.write('\n'.join(groupD))
print("Группы успешно созданы и записаны в текстовые файлы.")
Пояснения:
- Импорт библиотек:
os
используется для работы с файловой системой иrandom
для случайного выбора. - Указание директории: В переменной
directory
укажите путь к каталогу, где находятся ваши файлы. - Создание списка файлов: Генерируется список имен файлов от
file1
доfileX
, где X может быть 21 или 55 в зависимости от вашей категории. - Случайная перемешка: Используем
random.shuffle()
для случайного перемешивания списка файлов. - Группировка: Список разбивается на четыре группы. Мы гарантируем, что каждая группа содержит не менее 4 файлов.
- Запись в файлы: Итоговые группы записываются в соответствующие текстовые файлы в указанной директории.
Запуск скрипта:
Убедитесь, что у вас установлен Python. Просто сохраните приведенный выше код в файл, например, file_grouping.py
и запустите его из командной строки:
python file_grouping.py
Это создаст 4 текстовых файла (filegroupA.txt
, filegroupB.txt
, filegroupC.txt
, filegroupD.txt
) с случайно выбранными именами файлов в каждой группе.
Если у вас возникнут дополнительные вопросы или потребуется модификация кода, не стесняйтесь обращаться!