Citirea dumpului de date Freebase în Python, citiți câteva rânduri?

Încerc să folosesc baza de date freebase, dar se pare că am probleme cu citirea fișierelor cu Python. Se pare că programul meu nu cant să citească toate liniile.

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()

Rezultatele din aceasta:

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

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

Acest lucru poate fi tot. Se pare că există câteva linii care să conțină întreaga bază liberă. Și eu nu văd cum este posibil să se repetă peste un fișier de 33GB și un alt fișier de 5GB în 2 secunde.

Ce s-a întâmplat? Sunt descărcat din nou fișierele în cazul în care ceva a mers prost în timpul procesului de descărcare, dar este nevoie de decenii cu conexiunile mele, așa că am cerut ere în același timp. Dimensiunea fișierului este corectă și am imprimat unele dintre linii și arată corect.

0
ce spune wc -l yourfile ?
adăugat autor jterrace, sursa

3 răspunsuri

Se pare că decomprimați fișierele înainte de a le folosi. Ești aproape sigur mai bine să păstrezi fișierul comprimat și să îl decomprimi pe măsură ce îl accesezi.

from bz2 import BZ2File
for line in BZ2File('freebase-datadump-quadruples-.tsv.bz2','rU'):
    
0
adăugat

există o problemă care mi-a apărut:

open('file', 'rb')

ar trebui să o rezolve.

chr(26)

uneori, provoacă un fișier care se termină pentru modul text "r" care este implicit.

0
adăugat
deschide ('fișier', 'rb') în loc de a deschide ('fișier') a lucrat! codecs.open ("fișier", "r", "utf-8") funcționează, dar produce mai multe linii decât există pentru că unele dintre caracterele Unicode din acesta semnalează o linie nouă, ceea ce este rău în fișierele tsv.
adăugat autor kimg85, sursa

Scriptul dvs. rulează bine și produce numărul corect de linii pentru mine pe Ubuntu. Ar putea fi o limitare a sistemului dvs. de operare?

Parsarea unui text mare (20GB) fișier cu Python - citire în 2 rânduri ca 1

0
adăugat
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.