Python - Открыть TXT, Рандомизировать, Сохранить как новый файл

1

Я уже давно возился с рандомизацией в python, но по какой-то причине я застрял здесь. Может быть, это слишком поздно ночью...

Во всяком случае, я ищу быстрый простой метод в Python;

  • Открыть файл TXT
  • Рандомизированные линии
  • Сохранить как новый файл TXT

Я чувствую себя немой здесь... Любая помощь приветствуется! Благодарю!

Теги:
random
lines

1 ответ

6
Лучший ответ

Используйте random.shuffle для рандомизации последовательности:

import random

with open('filename', 'rb') as infile:
    lines = infile.readlines()

random.shuffle(lines)

with open('newfilename', 'wb') as outfile:
    outfile.writelines(lines)

Изменить: метод перетасовки, предложенный в другом ответе, неверен. См. Комментарии и ссылки в нем. Вот более верный пример тасования:

end = len(lines) - 1
for i in range(end + 1):
    choice = random.randint(i, end)
    lines[i], lines[choice] = lines[choice], lines[i]

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

  • 0
    Почему как бинарный ??
  • 0
    @TylerCrompton Нет особых причин, это мой по умолчанию. Это, вероятно, не имеет значения.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню