2011-11-09 2 views
1

私はずっとPythonでランダム化していましたが、何らかの理由でここにこだわっています。たぶん、夜遅すぎるかもしれません...Python - Open 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から完璧なランダム性を仮定して、ラインの位置をシャッフルする前に、その位置に完全に無相関です。他の答えに純粋なアルゴリズムを使用すると、そうではありません。 2つのシャッフルは両方とも同じ数の操作を行います。

    +0

    なぜバイナリとして? –

    +0

    @TylerCrompton特に理由はありませんが、これが私のデフォルトです。それはおそらく問題ではありません。 – agf

    +0

    Hmm。とにかくそれを読んでみる必要があります。個人的なデフォルトについて言えば、私は標準出力に出力して、結果をシェルで見ることができますし、出力をファイルとして保存することもできます。たぶんそれは私が教えられた方法だからです。 :/ –

    関連する問題