IT

'str' 개체에 특성 'filename'이 없습니다.Python 3 오류?

itgroup 2022. 11. 27. 11:27
반응형

'str' 개체에 특성 'filename'이 없습니다.Python 3 오류?

코드는 다음과 같습니다.

import imaplib
from email.parser import HeaderParser

conn = imaplib.IMAP4_SSL('imap.gmail.com')
conn.login('example@gmail.com', 'password')
conn.select()
conn.search(None, 'ALL')
data = conn.fetch('1', '(BODY[HEADER])')
header_data = data[1][0][1].decode('utf-8')

이 시점에서 에러 메세지가 표시됩니다.

AttributeError: 'str' object has no attribute 'decode'

Python 3는 디코딩을 더 이상 하지 않죠?어떻게 하면 고칠 수 있을까요?

또한 다음 항목에서

data = conn.fetch('1', '(BODY[HEADER])')

저는 첫 번째 메일만 골랐습니다.다 어떻게 선택하죠?

이미 디코딩된 개체를 디코딩하려고 합니다.가지고 있다strUTF-8을 사용하다

그냥 떨어뜨려구니를떨어뜨거져주세요..decode('utf-8') 삭제:

header_data = data[1][0][1]

의 객의에 fetch()첫 번째 메시지만 명시적으로 요구하고 있습니다.메시지를 더 가져오려면 범위를 사용하십시오.다음의 메뉴얼을 참조해 주세요.

다음 명령어에 대한 message_set 옵션은 액션할 메시지를 하나 이상 지정하는 문자열입니다.단순한 메시지 번호일 수 있습니다('1'번호 「」 「」 「」( )'2:4'('' ')'1:3,6:9'을 나타내는 할 수 '3:*'를 참조해 주세요.

PyJPyJ jwt WT v2.0.0으로 설정(22/12/20), PyJ로 설정.WT의 WTrequirements.txtfilename을 클릭합니다.

PyJWT==1.7.1

Python 3부터는 모든 문자열이 Unicode 객체입니다.

  a = 'Happy New Year' # Python 3
  b = unicode('Happy New Year') # Python 2

이치노 때문에 '아예'는 게 것 요..decode('utf-8')유니코드입니다.

다음 방법으로 사용:

str.encode().decode()

Python 3에서는 이 mental model은 매우 간단합니다.

  • 부호화란, I/O/O/O/O/O/O/Ostr a까지bytes 표시
  • 디코딩이란, 디코딩을 변환하는 프로세스입니다.bytesstr
┏━━━━━━━┓                ┏━━━━━━━┓
┃       ┃ -> encoding -> ┃       ┃
┃  str  ┃                ┃ bytes ┃
┃       ┃ <- decoding <- ┃       ┃
┗━━━━━━━┛                ┗━━━━━━━┛

같은 ', '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 네.data.decode("UTF-8"), 「」, 「」입니다str오브젝트 및 이미 디코딩되어 있습니다.해 주세요.data스트링이 필요한 경우 직접 사용할 수 있습니다.

Python3의 경우

html = """\\u003Cdiv id=\\u0022contenedor\\u0022\\u003E \\u003Ch2 class=\\u0022text-left m-b-2\\u0022\\u003EInformaci\\u00f3n del veh\\u00edculo de patente AA345AA\\u003C\\/h2\\u003E\\n\\n\\n\\n \\u003Cdiv class=\\u0022panel panel-default panel-disabled m-b-2\\u0022\\u003E\\n \\u003Cdiv class=\\u0022panel-body\\u0022\\u003E\\n \\u003Ch2 class=\\u0022table_title m-b-2\\u0022\\u003EInformaci\\u00f3n del Registro Automotor\\u003C\\/h2\\u003E\\n \\u003Cdiv class=\\u0022col-md-6\\u0022\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003ERegistro Seccional\\u003C\\/label\\u003E\\n \\u003Cp\\u003ESAN MIGUEL N\\u00b0 1\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EDirecci\\u00f3n\\u003C\\/label\\u003E\\n \\u003Cp\\u003EMAESTRO ANGEL D\\u0027ELIA 766\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EPiso\\u003C\\/label\\u003E\\n \\u003Cp\\u003EPB\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EDepartamento\\u003C\\/label\\u003E\\n \\u003Cp\\u003E-\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EC\\u00f3digo postal\\u003C\\/label\\u003E\\n \\u003Cp\\u003E1663\\u003C\\/p\\u003E\\n \\u003C\\/div\\u003E\\n \\u003Cdiv class=\\u0022col-md-6\\u0022\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003ELocalidad\\u003C\\/label\\u003E\\n \\u003Cp\\u003ESAN MIGUEL\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EProvincia\\u003C\\/label\\u003E\\n \\u003Cp\\u003EBUENOS AIRES\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003ETel\\u00e9fono\\u003C\\/label\\u003E\\n \\u003Cp\\u003E(11)46646647\\u003C\\/p\\u003E\\n \\u003Clabel class=\\u0022control-label\\u0022\\u003EHorario\\u003C\\/label\\u003E\\n \\u003Cp\\u003E08:30 a 12:30\\u003C\\/p\\u003E\\n \\u003C\\/div\\u003E\\n \\u003C\\/div\\u003E\\n\\u003C\\/div\\u003E \\n\\n\\u003Cp class=\\u0022text-center m-t-3 m-b-1 hidden-print\\u0022\\u003E\\n \\u003Ca href=\\u0022javascript:window.print();\\u0022 class=\\u0022btn btn-default\\u0022\\u003EImprim\\u00ed la consulta\\u003C\\/a\\u003E \\u0026nbsp; \\u0026nbsp;\\n \\u003Ca href=\\u0022\\u0022 class=\\u0022btn use-ajax btn-primary\\u0022\\u003EHacer otra consulta\\u003C\\/a\\u003E\\n\\u003C\\/p\\u003E\\n\\u003C\\/div\\u003E"""
print(html.replace("\\/", "/").encode().decode('unicode_escape'))

라이브러리는 잘 모릅니다만, 바이트 배열을 원하지 않는 것이 문제라면, 한 가지 간단한 방법은 캐스트에 직접 인코딩 유형을 지정하는 것입니다.

>>> my_byte_str
b'Hello World'

>>> str(my_byte_str, 'utf-8')
'Hello World'

Python3에서는 이미 디코딩되어 있습니다.직접 사용해 보세요.

코덱 모듈의 open()을 사용하여 파일을 읽습니다.

import codecs
with codecs.open(file_name, 'r', encoding='utf-8', errors='ignore') as fdata:

이 방법은 효과가 있었습니다.

html.replace("\\/", "/").encode().decode('unicode_escape', 'surrogatepass')

이는 json.loads(html) 동작과 유사합니다.

로지스틱 레깅스를 위해 Kaggle에 참여하는 동안 동일한 오류가 발생한 경우 다음과 같은 해결책이 있습니다.

logmodel = LogisticRegression(solver='liblinear')

다른 답변은 힌트입니다만, 이 문제는 바이트 오브젝트를 상정하고 있기 때문에 발생할 수 있습니다.Python 3에서 디코딩은 클래스 바이트의 개체가 있을 때 유효합니다.디코딩 전에 인코딩을 실행하면 문제가 "수정"될 수 있지만 업스트림에서 문제를 시사하는 불필요한 연산 쌍입니다.

생성하는 동안 'str' 개체에 'decode' 특성이 없습니다.JWT access_token사용.Flask_JWT_extended패키지.

이 문제를 수정하기 위해Flask-JWT-Extended로 포장하다.Flask-JWT-Extended==4.1.0

참조용:

다음 페이지를 방문하십시오.https://flask-jwt-extended.readthedocs.io/en/stable/

먼저 적절한 J를 설치합니다.WT

pip3 install PyJWT

그럼 당신의 코드로

token.encode().decode('UTF-8')

이게 나한테 효과가 있었어 이게 너한테 도움이 될 것 같아

Django 및 simple-jwt를 사용하는 경우:100% 솔루션

pip install PyJWT==1.7.1

이 경우는 조금 드물었지만, django와 함께 작업 중이었고, 프로젝트를 로컬로 실행하고 있었지만 도입했을 때는 그렇지 않았습니다.다음 작업을 하고 있었기 때문에 여러 개의 의존관계 오류가 발생하고 있는 것 같습니다.pip freeze > requirements.txt이렇게 하면 문제가 해결됩니다.

pip3 freeze > requirements.txt

언급URL : https://stackoverflow.com/questions/28583565/str-object-has-no-attribute-decode-python-3-error

반응형