Python - 打开TXT,随机化,另存为新文件

时间:2011-11-09 09:26:53

标签: python random lines

我一直在乱用python随机一段时间,但出于某种原因,我被困在这里。也许现在已经太晚了......

无论如何,我正在寻找一种快速简单的Python方法;

  • 打开TXT文件
  • 随机化行
  • 另存为新的TXT文件

我在这里感觉有点笨... 任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分: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的完美随机性,线的位置与其在洗牌之前的位置完全不相关。在另一个答案中使用朴素算法,情况并非如此。两次洗牌都采用相同数量的操作。