2017-12-01 9 views
0

私はPythonでchatbotプログラムを作成しています。コードを実行すると、次のエラーが発生します。TypeError:open()は予期しないキーワード引数 'buffering'を受け取りました

Traceback (most recent call last): 
    File "C:/Users/stephen/AppData/Local/Programs/Python/Python35/chatbot.py", line 97, in <module> 
    with bz2.open("C:/RC_{}".format(timeframe.split('-')[0],timeframe), buffering=1000) as f: 
TypeError: open() got an unexpected keyword argument 'buffering' 

エラーに関するオンライン情報が見つかりませんでした。私が見たのはおそらくそれがバグだったので、私はそれをPythonに報告するべきです。現在Python3.5.3を実行しています。これは、エラーを取得するコードの一部です。

with bz2.open("C:/RC_{}".format(timeframe.split('-')[0],timeframe), buffering=1000) as f: 
    for row in f: 
     row_counter += 1 
     parent_id = row['parent_id'] 
     body = format_data(row['body']) 
     created_utc = row['created_utc'] 
     score = row['score'] 
     comment_id = row['name'] 
     subreddit = row['subreddit'] 
     parent_data = find_parent(parent_id) 
+0

質問の書式を設定するのに必要な時間を読んでください。 – Shadow

+0

引数 'buffering = 1000'を削除するだけです。これは' open'メソッドの正しいシグネチャであると確信していますか?代わりに 'bz2.BZ2File'を代わりに使いたいかもしれません。 –

+1

バグを報告する必要はないと思われます。「機能はPythonには取らないことを定義しているという議論をしません。 – donkopotamus

答えて

1

誤差は非常に明示的である:

TypeError: open() got an unexpected keyword argument 'buffering' 

bz2.openのドキュメントの簡単なチェックは、この関数はbuffering引数を取らないことを示すだろう。

だから単純に削除してください。

1

The bz2.open functionは、引数がbufferingではありません。 bufferingを取りさえbz2.BZ2Fileは、明示的にノート:

The buffering argument is ignored. Its use is deprecated.

バッファリングの引数は、コンプレッサーのためのビット無意味です。彼らはにはがある程度バッファリングされています。なぜなら、Xのデータ量を要求すると、未知の最終サイズのブロックを解凍して取得する必要があるから、ブロック全体を解凍して、 X要求に達するか、Xに達すると圧縮解除を停止し、圧縮データをバッファリングします(ストリームから1バイトの圧縮を解除すると、多くのバイトの出力が生成されるため、圧縮されていないデータをバッファリングする必要があります)。

ポイントは、バッファリングを無効または制限する合理的な方法はありません。コンプレッサのニーズは、あなたがそのレベルの制御を持たないことを意味します。

関連する問題