TypeError: open() получил неожиданный аргумент ключевого слова 'buffering'
Я пишу программу чата с 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)
2 ответа
Ошибка очень явная:
TypeError: open() got an unexpected keyword argument 'buffering'
Простая проверка документации для bz2.open
затем покажет вам, что эта функция не принимает buffering
аргумент.
Так что просто удали это.
bz2.open
функция не занимает buffering
аргумент. Четное bz2.BZ2File
, который занимает buffering
, явно отмечает:
buffering
аргумент игнорируется. Его использование не рекомендуется.
Аргументы буферизации немного бессмысленны для компрессоров; они должны до некоторой степени буферизовать, так как, если вы запрашиваете объем данных X, им может понадобиться распаковать блок неизвестного конечного размера, чтобы получить его, поэтому они либо распаковывают весь блок и буферизируют несжатые данные за пределами X запрашивать или останавливать декомпрессию, когда они достигают X, буферизируя сжатые данные (и им, возможно, все еще придется буферизовать некоторые несжатые данные, поскольку декомпрессия одного байта из потока может привести к выводу многих байтов).
Дело в том, что нет разумного способа отключить или ограничить буферизацию; потребности компрессора означают, что у вас нет такого уровня контроля.