2017-05-11 28 views
1

ループでたくさんの文字列を生成します。これらの文字列をファイルに書き込む必要があります。私のファイルがソートされていることを願っています。次のコードは、私が何をしたいのかを示しています。ソートされたファイルに行を挿入する方法は?

#! /usr/bin/python2.7 
# -*- coding: utf-8 -*- 
my_file = open('my_file.txt', 'w') 

#randon_string and insert_in_order_alphabetically are just for the example 
for x in range(1,100000000): 
    my_string = random_string() 
    my_file.insert_in_alphabetical_order(my_string) 

my_file.close() 

んパイソンしている機能のためにこれを行うか、私は自分のアルゴリズムをコーディングする必要がありますか?

+2

がアルファベット順に_Enter_することが必要である:

lines = [] with open('file.txt','r') as f: for line in f: lines.append(line.rstrip()) lines.append('z') lines.append('e') lines.append('e') lines.sort() with open('file.txt', 'w') as f: for line in lines: f.write(line + "\n") 

これは、ファイルを作成しますすべての文字列をコンパイルした後リストに? – patrick

+0

ファイルに何かを挿入すると、後ですべてのコンテンツを新しい位置に移動する必要があります。大量の反復では 'string_length * 100000000/2 * 100000000'バイトが平均的に書き換えられます。だから、あなたはメモリ内の並べ替えを行う必要があります。 –

答えて

0

最もスマートに行うべきことは、ファイルをlistとして読み込み、すべての余分な文字列を追加してからsortを使用してファイルに書き直すことです。

など。

c 
c 
c 
a 
a 
b 
a 
a 

とコード:ファイル与えられた - あなたは可能性がちょうど `ソート()`

a 
a 
a 
a 
b 
c 
c 
c 
e 
e 
z 
+0

問題は私のサイズファイルが100Goを超えることであり、ファイルを分割して分割をソートしてマージするのを避けたい。私は自分のアルゴリズムを書くだけだと思う​​。 – sushi

関連する問題