4

フリーベースのデータ ダンプを使用しようとしていますが、Python でファイルを読み取る際に問題があるようです。私のプログラムはすべての行を読み取れないようです。

def test2():
    count=0
    for line in open(FREEBASE_TOPIC):
        count+=1
    return count

def test3():
    count=0
    for line in open(FREEBASE_QUAD):
        count+=1
    return count


if __name__ == "__main__":

   print "FREEBASE TOPIC - NR LINES:",test2()
   print "FREEBASE QUAD - NR LINES:",test3()

結果は次のようになります。

FREEBASE TOPIC - ITR TIME: 1.21000003815
FREEBASE TOPIC - NR LINES: 1643010

FREEBASE QUAD - ITER TIME: 0.797000169754
FREEBASE QUAD - NR LINES: 3155131

これですべてです。フリーベース全体を含めるには数行しかないようです。そして、1 つの 33GB ファイルと別の 5GB ファイルを 2 秒で反復処理する方法がわかりません。

なにが問題ですか?ダウンロード プロセス中に問題が発生した場合に備えて、ファイルを再度ダウンロードしていますが、接続に数十年かかるため、その間に質問します。ファイルサイズは正しいです。いくつかの行を印刷しましたが、正しく見えます。

4

3 に答える 3

2

私に発生した問題があります:

open('file', 'rb')

それを解決する必要があります。

chr(26)

デフォルトのテキストモード「r」でファイルが終了することがあります。

于 2012-06-04T20:03:44.417 に答える
2

ファイルを使用する前に解凍しているようです。ファイルを圧縮したままにし、アクセスするときに解凍する方がほぼ確実です。

from bz2 import BZ2File
for line in BZ2File('freebase-datadump-quadruples-<date>.tsv.bz2','rU'):
    <process a line>
于 2012-06-08T18:27:05.127 に答える
0

あなたのスクリプトは正常に実行され、Ubuntu で正しい行数が生成されます。これはあなたのOSの制限でしょうか?

Pythonで大きな(20GB)テキストファイルを解析する - 2行を1行で読む

于 2012-06-04T20:37:58.230 に答える