Python3 오류: initial_value는 Str 또는 None(문자열 포함)이어야 합니다.IO
코드를 이식하는 동안python2로.3URL에서 읽을 때 이 오류가 발생함
TypeError: initial_value는 바이트가 아닌 str 또는 None이어야 합니다.
import urllib
import json
import gzip
from urllib.parse import urlencode
from urllib.request import Request
service_url = 'https://babelfy.io/v1/disambiguate'
text = 'BabelNet is both a multilingual encyclopedic dictionary and a semantic network'
lang = 'EN'
Key = 'KEY'
params = {
'text' : text,
'key' : Key,
'lang' :'EN'
}
url = service_url + '?' + urllib.urlencode(params)
request = Request(url)
request.add_header('Accept-encoding', 'gzip')
response = urllib.request.urlopen(request)
if response.info().get('Content-Encoding') == 'gzip':
buf = StringIO(response.read())
f = gzip.GzipFile(fileobj=buf)
data = json.loads(f.read())
예외는 이 줄에 표시됩니다.
buf = StringIO(response.read())
python2를 사용하면 잘 작동합니다.
response.read()의 인스턴스를 반환합니다.bytes는 텍스트 전용 메모리 스트림입니다.대신 사용합니다.
Python 3.0의 새로운 기능 - 텍스트 Vs. 유니코드 대신 데이터 대 8비트
그
StringIO그리고.cStringIO모듈이 사라졌습니다.대신 다음 항목을 가져옵니다.io모듈 및 사용io.StringIO또는io.BytesIO각각 텍스트와 데이터에 대해.
이것은 다른 파이썬3처럼 보입니다.bytes대.str문제.응답 유형이 다음과 같습니다.bytes(파이썬 3과는 다릅니다.str. 를 사용하여 먼저 문자열로 가져와야 합니다.response.read().decode('utf-8')말하고 나서 사용합니다.StringIO그 위에. 아니면 당신이 사용할 수도 있습니다.BytesIO누군가가 말했듯이 - 하지만 당신이 그것을 기대한다면.str하는 것이 선호되는 방법입니다.decode의 상태로.str첫번째.
6을 사용하는 것을 고려해 보세요.io 대신 IO를 문자열로 지정합니다.문자열 IO.
그리고 만약 당신이 python2에서 python3으로 코드를 마이그레이션하고 suds-py3를 사용한다면 python3에 "suds-py3"를 사용하세요.
언급URL : https://stackoverflow.com/questions/31064981/python3-error-initial-value-must-be-str-or-none-with-stringio
'programing' 카테고리의 다른 글
| 오라클 행의 여러 열에서 피벗 사용 (0) | 2023.06.08 |
|---|---|
| TypeScript Playground로 라이브러리를 가져오는 방법 (0) | 2023.06.08 |
| NPOI로 작성된 Excel 문서에서 열을 '자동 크기'로 설정하려면 어떻게 해야 합니까? (0) | 2023.06.08 |
| python 3.2 UnicodeError: 'charmap' 코덱은 9629 위치의 '\u2013' 문자를 인코딩할 수 없습니다: 다음 위치의 문자 맵 (0) | 2023.06.08 |
| ASP.NET 페이지 없이 Url 확인 (0) | 2023.06.08 |