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

1 投票
1 回答
2737 浏览
提问于 2025-04-17 05:56

我最近在用Python玩随机化的东西,但不知道为什么卡在这里了。也许是因为太晚了...

总之,我想找一个简单的方法来:

  • 打开一个TXT文件
  • 随机打乱里面的行
  • 保存为一个新的TXT文件

我觉得自己有点傻... 希望能得到一些帮助!谢谢!

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 的随机性是完美的,那么一行的当前位置和打乱前的位置是完全没有关系的。使用其他答案中的简单算法,情况就不是这样了。这两种打乱方法所需的操作次数是一样的。

撰写回答