Выберите случайные файлы и поместите имена в текстовые файлы

Вопрос или проблема

в папке находятся файлы от 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("Группы успешно созданы и записаны в текстовые файлы.")

Пояснения:

  1. Импорт библиотек: os используется для работы с файловой системой и random для случайного выбора.
  2. Указание директории: В переменной directory укажите путь к каталогу, где находятся ваши файлы.
  3. Создание списка файлов: Генерируется список имен файлов от file1 до fileX, где X может быть 21 или 55 в зависимости от вашей категории.
  4. Случайная перемешка: Используем random.shuffle() для случайного перемешивания списка файлов.
  5. Группировка: Список разбивается на четыре группы. Мы гарантируем, что каждая группа содержит не менее 4 файлов.
  6. Запись в файлы: Итоговые группы записываются в соответствующие текстовые файлы в указанной директории.

Запуск скрипта:

Убедитесь, что у вас установлен Python. Просто сохраните приведенный выше код в файл, например, file_grouping.py и запустите его из командной строки:

python file_grouping.py

Это создаст 4 текстовых файла (filegroupA.txt, filegroupB.txt, filegroupC.txt, filegroupD.txt) с случайно выбранными именами файлов в каждой группе.

Если у вас возникнут дополнительные вопросы или потребуется модификация кода, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...