2016-11-22 29 views
2

私はpythonを使ってavroファイルを読み込もうとしています。pythonでavroファイルを読む方法3.5.2

私は、次のアブロファイルを読み取るしようとしたとき、私は、しかし、ここで

https://avro.apache.org/docs/1.8.1/gettingstartedpython.html 

命令の次の(私はPythonシェルで「輸入アブロ」のことですので、私は私がやったと思う)が正常にApacheアブロをインストール上記の命令のコード。私はavro関連のものをインポートする際にエラーを受け取り続けます。

>>> import avro.schema 
Traceback (most recent call last): 
File "<pyshell#6>", line 1, in <module> 
import avro.schema 
File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
File "<frozen importlib._bootstrap>", line 954, in _find_and_load_unlocked 
File "<frozen importlib._bootstrap>", line 896, in _find_spec 
File "<frozen importlib._bootstrap_external>", line 1139, in find_spec 
File "<frozen importlib._bootstrap_external>", line 1115, in _get_spec 
File "<frozen importlib._bootstrap_external>", line 1096, in _legacy_get_spec 
File "<frozen importlib._bootstrap>", line 444, in spec_from_loader 
File "<frozen importlib._bootstrap_external>", line 533, in spec_from_file_location 
File "I:\Program Files\lib\site-packages\avro-_avro_version_-py3.5.egg\avro\schema.py", line 340 
except Exception, e: 
       ^
SyntaxError: invalid syntax 


>>> from avro.datafile import DataFileReader, DataFileWriter 
Traceback (most recent call last): 
File "I:\Program Files\lib\site-packages\avro-_avro_version_-py3.5.egg\avro\datafile.py", line 21, in <module> 
from cStringIO import StringIO 
ImportError: No module named 'cStringIO' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
File "<pyshell#7>", line 1, in <module> 
from avro.datafile import DataFileReader, DataFileWriter 
File "I:\Program Files\lib\site-packages\avro-_avro_version_-py3.5.egg\avro\datafile.py", line 23, in <module> 
from StringIO import StringIO 
ImportError: No module named 'StringIO' 


>>> from avro.io import DatumReader, DatumWriter 
Traceback (most recent call last): 
File "<pyshell#19>", line 1, in <module> 
from avro.io import DatumReader, DatumWriter 
File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
File "<frozen importlib._bootstrap>", line 954, in _find_and_load_unlocked 
File "<frozen importlib._bootstrap>", line 896, in _find_spec 
File "<frozen importlib._bootstrap_external>", line 1139, in find_spec 
File "<frozen importlib._bootstrap_external>", line 1115, in _get_spec 
File "<frozen importlib._bootstrap_external>", line 1096, in _legacy_get_spec 
File "<frozen importlib._bootstrap>", line 444, in spec_from_loader 
File "<frozen importlib._bootstrap_external>", line 533, in spec_from_file_location 
File "I:\Program Files\lib\site-packages\avro-_avro_version_-py3.5.egg\avro\io.py", line 200 
bits = (((ord(self.read(1)) & 0xffL)) | 
           ^
SyntaxError: invalid syntax 

私はavroを正常にインストールしましたか?なぜ私はそれらのエラーを受け取っていますか?私はステファン・マーティンの提案、次の問題を修正編集 Windows 7の

でPython 3.5.2を使用しています。その後、私はavroファイルをPythonに読み込もうとします。私は既にpythonの正しいパスとして設定されているディレクトリにavrosの束を持っています。ここに私のコードは

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

reader = DataFileReader(open("part-00000-of-01733.avro", "r"), DatumReader()) 
for user in reader: 
    print (user) 
reader.close() 

あり、それは誤り

Traceback (most recent call last): 
File "I:\DJ data\read avro.py", line 5, in <module> 
reader = DataFileReader(open("part-00000-of-01733.avro", "r"), DatumReader()) 
File "I:\Program Files\lib\site-packages\avro_python3-1.8.1-py3.5.egg\avro\datafile.py", line 349, in __init__ 
self._read_header() 
File "I:\Program Files\lib\site-packages\avro_python3-1.8.1-py3.5.egg\avro\datafile.py", line 459, in _read_header 
META_SCHEMA, META_SCHEMA, self.raw_decoder) 
File "I:\Program Files\lib\site-packages\avro_python3-1.8.1-py3.5.egg\avro\io.py", line 525, in read_data 
return self.read_record(writer_schema, reader_schema, decoder) 
File "I:\Program Files\lib\site-packages\avro_python3-1.8.1-py3.5.egg\avro\io.py", line 725, in read_record 
field_val = self.read_data(field.type, readers_field.type, decoder) 
File "I:\Program Files\lib\site-packages\avro_python3-1.8.1-py3.5.egg\avro\io.py", line 515, in read_data 
return self.read_fixed(writer_schema, reader_schema, decoder) 
File "I:\Program Files\lib\site-packages\avro_python3-1.8.1-py3.5.egg\avro\io.py", line 568, in read_fixed 
return decoder.read(writer_schema.size) 
File "I:\Program Files\lib\site-packages\avro_python3-1.8.1-py3.5.egg\avro\io.py", line 170, in read 
input_bytes = self.reader.read(n) 
File "I:\Program Files\lib\encodings\cp1252.py", line 23, in decode 
return codecs.charmap_decode(input,self.errors,decoding_table)[0] 

UnicodeDecodeError返し「のcharmap」コーデックは位置863でのバイトは0x90をデコードすることはできません。文字は私が実際に承知しています

にマップを命令の例では、まずスキーマが作成されます。しかし、avscファイルとは何ですか?私はそれをどのように作成し、それに対応するスキーマを私のケースで作成しますか?

+0

例外を除き、e => python 2のみの構文です。ライブラリはおそらくPython 3と互換性がありません –

答えて

2

http://apache.mediamirrors.org/avro/avro-1.8.2/py3/

アブロ-1.8.2が削除された場合は、リンク上で動作しない可能性があることを注意パイソン2用のPython 3用アブロ分布ではなく、いずれかを使用します。

+0

Python 3用にインストールされましたが、それでもエラーが発生します。 Pythonがまだavroの古いバージョンを使用している可能性はありますか?私は最初に古いものをアンインストールする必要がありますか? –

+0

私は両方のavroパッケージを正しい 'site-packages'ディレクトリから削除し、avro –

+0

のpython3ディストリビューションを再インストールします。ありがとう。しかし、私はavroファイルを読む他の質問があります。編集した質問をご覧ください。あなたの助けをもう一度ありがとう。 –

0

pipまたは類似のパッケージマネージャーを使用してインストールする場合:avroではなくavro-python3パッケージをインストールしてください。

関連する問題