Python 3.0 urllib.parse ошибка “Type str не поддерживает буферный API”

Преобразуйте свои даты в часовой пояс GMT, когда вы набиваете их в Mongo. Таким образом, никогда не возникает проблема с часовым поясом. Затем просто сделайте математику в поле twitter / timezone, когда вы вытащите данные для презентации.

23
задан Evan Fosmark 12 February 2009 в 07:24
поделиться

2 ответа

urllib пытается сделать:

b'a,b'.split(',')

, Который не работает. строки байтов и строки unicode смешиваются еще менее гладко в Py3k, чем они использовали to —  deliberately, чтобы заставить проблемы кодирования пойти не так, как надо как можно скорее.

, Таким образом, ошибка скорее непрозрачно говорит Вам, что ‘you не может передать строку байтов urllib.parse’. По-видимому, Вы делаете запрос POST, где закодированная формой строка входит в cgi как в тело содержания; тело содержания является все еще строкой байтов / поток, таким образом, это теперь сталкивается с новым urllib.

Так да, это - ошибка в cgi.py, еще одной жертве 2to3 преобразование, которое не было зафиксировано правильно для новой строковой модели. Это должно преобразовывать входящий поток байтов в символы прежде, чем передать их urllib.

я упоминал библиотеки Python 3.0's (особенно связанные с сетью) все еще являющийся скорее shonky? :-)

28
ответ дан bobince 29 November 2019 в 02:01
поделиться

из учебного пособия Python ( http://www.python.org/doc/3.0/tutorial/stdlib.html ) Существует пример использования метода URLOPEN. Это поднимает ту же ошибку.

for line in urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
    if 'EST' in line or 'EDT' in line:  # look for Eastern Time
        print(line)

Вам нужно будет использовать функцию str для преобразования байтов в строку с правильной кодировкой. Как следует:

for line in urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
    lineStr = str( line, encoding='utf8' )
    if 'EST' in lineStr or 'EDT' in lineStr:  # look for Eastern Time
        print(lineStr)
13
ответ дан 29 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: