2011-11-09 27 views
1

我一直在亂python一段時間隨機現在,但由於某種原因,我卡在這裏。也許它晚上太晚了......Python - 打開TXT,隨機化,另存爲新文件

無論如何,我正在尋找一種簡單的Python方法,

  • 打開TXT文件
  • 隨機化線
  • 另存爲新的TXT文件

我感覺有點啞這裏... 任何幫助表示讚賞!謝謝!

回答

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沒有特別的原因,那是我的默認值。這可能沒有關係。 – agf

+0

嗯。無論如何,我需要閱讀。說到個人默認值,我更喜歡打印到標準輸出,以便我可以在shell中看到結果,或者我可以選擇將輸出保存爲文件。也許是因爲這是我被教導的方式。 :/ –