TypeError:open()得到了一个意外的关键字参数'缓冲'

时间:2017-12-01 03:08:33

标签: python python-3.x bz2

我正在用python编写一个chatbot程序,当我运行我的代码时,我收到以下错误。

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'

无法在线找到有关错误的任何信息。我所看到的可能是它是一个bug,我应该将它报告给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)

2 个答案:

答案 0 :(得分:1)

错误非常明确:

Account

bz2.open的文档进行简单检查后会显示此函数不会使用TypeError: open() got an unexpected keyword argument 'buffering' 参数。

所以简单地删除它。

答案 1 :(得分:1)

The bz2.open function没有buffering参数。即使bz2.BZ2Filebuffering明确指出:

  

忽略buffering参数。它的使用已被弃用。

缓冲参数对压缩器来说有点荒谬;他们缓冲到一定程度,因为如果你请求X数据量,他们可能需要解压缩一个未知最终大小的块来获取它,所以他们要么解压缩整个块,缓冲超出X请求的未压缩数据,或者当它们到达X时停止解压缩,缓冲压缩数据(他们可能仍然必须缓冲一些未压缩数据,因为从流中解压缩单个字节可以产生许多字节的输出)。 p>

重点是,没有合理的方法来禁用或限制缓冲;压缩机的需求意味着你没有那种控制水平。