2016-12-31 1 views
5

Ich bin neu in Python und ich versuchte, einen einfachen Code zum Konvertieren einer Textdatei in avro zu schreiben. Ich bekomme diesen Fehler, dass das Modul nicht gefunden wurde. Ich konnte in der Datei schema.py deutlich sehen, dass das Parse-Modul existiert. Ich werde es schätzen, wenn mir jemand helfen könnte zu verstehen, was ich falsch mache.Modul 'avro.schema' hat kein Attribut 'parse'

import avro.schema, csv, codecs 
from avro.datafile import DataFileReader, DataFileWriter 
from avro.io import DatumReader, DatumWriter 


def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs): 
# csv.py doesn't do Unicode; encode temporarily as UTF-8: 
csv_reader = csv.reader(utf_8_encoder(unicode_csv_data), 
         dialect=dialect, **kwargs) 
for row in csv_reader: 
    # decode UTF-8 back to Unicode, cell by cell: 
    yield [unicode(cell, 'utf-8') for cell in row] 

def utf_8_encoder(unicode_csv_data): 
for line in unicode_csv_data: 
    yield line.encode('utf-8') 

schema = avro.schema.parse(open('C:/test/test.avsc', "rb").read()) 

Ich bin mit Python 3.5.2, Avro-python3-1.8.1 auf Windows 10.

Antwort

9

Sie haben die Avro Codebeispiel aus ihrer tutorial, aber leider ist es nicht für avro-python3 aktualisiert.

Statt:

schema = avro.schema.parse(open('file.avsc', "rb").read()) 

Sie müssen die Datei im Textmodus lesen, und verwenden Sie die Parse() Methode:

schema = avro.schema.Parse(open('file.avsc', "r").read()) 
Verwandte Themen