0

この小さなスクリプトは、ファイルを読み取り、各行を正規表現と一致させようとし、一致する行を別のファイルに追加します。

regex = re.compile(r"<http://dbtropes.org/resource/Film/.*?> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbtropes.org/resource/Main/.*?> \.")

with open("dbtropes-v2.nt", "a") as output, open("dbtropes.nt", "rb") as input:
    for line in input.readlines():
        if re.findall(regex,line):
            output.write(line)

input.close()
output.close()

ただし、スクリプトは約 5 分後に突然停止します。ターミナルには「プロセスが停止しました」と表示され、出力ファイルは空白のままです。

入力ファイルはここからダウンロードできます: http://dbtropes.org/static/dbtropes.zip これは 4.3Go n-triples ファイルです。

私のコードに何か問題がありますか? それは何か他のものですか?これについてのヒントをいただければ幸いです。

4

2 に答える 2

1

ファイル全体を読み取らないようにするのfor line in inputではなく、使用します。readlines()

マイナー ポイント: ファイルをコンテキスト マネージャーとして開いている場合は、ファイルを閉じる必要はありません。次のようにすると、よりきれいになるかもしれません。

with open("dbtropes-v2.nt", "a") as output
     with open("dbtropes.nt", "rb") as input:
          for line in input:
              if re.findall(regex,line):
                  output.write(line)
于 2014-10-28T18:24:45.463 に答える