текст из наборов строк файлов

 из одного cлучайного файла за раз мы должны вывести 3-4 строки
 потом берём другой файл  и так пока не получится текст из 200 строк


 >>


Для реализации этой задачи используем такой код :
 python





import os
import random

def read_random_lines(file_path, num_lines=3):
    """Читает заданное количество случайных строк из файла."""
    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()
   
    # Если в файле меньше строк, чем запрашиваемое число, возвращаем весь файл
    if len(lines) <= num_lines:
        return lines
    else:
        # Возвращаем случайные строки из файла
        return random.sample(lines, num_lines)

# Определяем список всех .txt файлов в текущей директории
files = [f for f in os.listdir('.') if f.endswith('.txt')]

result_text = []
current_length = 0

while current_length < 200 and files:
    # Берём следующий файл
    next_file = random.choice(files)
    files.remove(next_file)
   
    # Чтение случайных строк из текущего файла
    new_lines = read_random_lines(next_file)
   
    # Добавляем прочитанные строки в итоговый текст
    result_text.extend(new_lines)
    current_length += len(new_lines)

# Доводим длину текста до 200 строк
if current_length < 200:
    last_file = random.choice(files + ['output.txt'])
    remaining_lines = 200 - current_length
    extra_lines = read_random_lines(last_file, remaining_lines)
    result_text.extend(extra_lines)

# Выведем полученный текст на экран
for line in result_text[:200]:
    print(line.strip())


Объяснение изменений:
Теперь каждая итерация берёт случайный файл и извлекает оттуда от 3 до 4 случайных строк.

Файл удаляется из списка доступных после обработки, чтобы исключить повторное использование.
Процесс продолжается до тех пор, пока не накопится хотя бы 200 строк.

Когда общий объём достигает требуемого числа строк, процесс останавливается, и полученный текст выводится на экран.
Теперь результат выглядит именно так, как было указано в промте


Рецензии