0

我正在用 python 编写一个聊天机器人程序,当我运行我的代码时,出现以下错误。

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

2 回答 2

1

错误非常明确:

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

对文档的简单检查bz2.open会告诉你这个函数不带buffering参数。

因此,只需将其删除。

于 2017-12-01T03:18:08.103 回答
1

bz2.open函数不带buffering参数。Even bz2.BZ2File,它需要buffering,明确指出:

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

缓冲参数对于压缩器来说有点荒谬。他们必须在一定程度上进行缓冲,因为如果您请求 X 数量的数据,他们可能需要解压缩最终大小未知的块才能获得它,因此他们要么解压缩整个块,要么将未压缩的数据缓冲到 X 之外请求,或者在它们到达 X 时停止解压缩,缓冲压缩数据(并且它们可能仍然需要缓冲一些未压缩的数据,因为从流中解压缩单个字节会产生许多字节的输出)。

关键是,没有合理的方法来禁用或限制缓冲;压缩机的需求意味着您没有那种程度的控制。

于 2017-12-01T03:18:54.550 回答