データが '\n' で区切られているソート済みファイルのリストがあります。それらをマージして、単一のソート済みファイルを取得したいと考えています。すべてのファイルのコンテンツを一度にロードしたくありません。heapq ライブラリのマージ機能を使用しています
次のコードを書きました
def merge(*flist):
for element in heapq.merge(*flist):
yield element
*flist は次のようなタプルです -
(<open file '/tmp/000000', mode 'w+b' at 0xb73eba70>,
<open file '/tmp/000001', mode 'w+b' at 0xb73ebac8>,
<open file '/tmp/000002', mode 'w+b' at 0xb73ebb20>,
<open file '/tmp/000003', mode 'w+b' at 0xb73ebb78>,
<open file '/tmp/000004', mode 'w+b' at 0xb73ebc80>)
上記の要素をループで出力すると、値「2\n」、「44\n」が得られます。出力ファイルもソート順ではありません。問題は改行文字によるものだと思います。この問題に対処する方法。
私はかなり長い間これを修正しようとしていますが、解決できませんでした