【问题标题】:module 'avro.schema' has no attribute 'parse'模块“avro.schema”没有属性“解析”
【发布时间】:2016-12-31 05:22:53
【问题描述】:

我是 python 新手,我正在尝试编写一个简单的代码来将文本文件转换为 avro。我收到该模块未找到的错误。我可以在 schema.py 文件中清楚地看到解析模块存在。如果有人可以帮助我了解我可能做错了什么,我将不胜感激。

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

我在 Windows 10 上使用 Python 3.5.2、avro-python3-1.8.1。

【问题讨论】:

    标签: python parsing avro


    【解决方案1】:

    您从他们的 tutorial 获得了 avro 代码示例,但不幸的是,它没有为 avro-python3 更新。

    代替:

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

    需要以文本模式读取文件,并使用Parse()方法:

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

    【讨论】:

    • 2.5 年,仍然没有人更新那个文档错误。太棒了。
    • 太棒了!我同意。它有多活跃。
    • 而且在这一点上,他们还没有在他们的 pypi 包中添加语言版本限制。因此,如果您不小心安装了 avro 而不是 avro-python3,您将毫无怨言地安装了 python2 版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 2020-06-04
    • 2021-12-24
    • 2015-05-08
    相关资源
    最近更新 更多