Python - Открыть TXT, Рандомизировать, Сохранить как новый файл - PullRequest
1 голос
/ 09 ноября 2011

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

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

  • Открыть файл TXT
  • Randomize Lines
  • Сохранить как новый текстовый файл

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

1 Ответ

6 голосов
/ 09 ноября 2011

Используйте 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, позиция линии полностью некоррелирована с ее положением перед тасованием. Используя наивный алгоритм в другом ответе, это не так. Оба шаффла выполняют одинаковое количество операций.

...