utf8 str open has attribute python python-3.x utf-8

str - python encode utf8



error UnicodeDecodeError: el códec ''utf-8'' no puede decodificar el byte 0xff en la posición 0: byte de inicio no válido (13)

HitHere, primero debe cargar el archivo "GoogleNews-vectors-negative300.bin.gz" y luego extraerlo con este comando en Ubuntu: gunzip -k GoogleNews-vectors-negative300.bin.gz. [nunca se recomienda la extracción manual]. en segundo lugar, debe aplicar estos comandos en pyrhon 3:

import gensim model = gensim.models.Word2Vec.load_word2vec_format(''./model/GoogleNews-vectors-negative300.bin'', binary=True) . Espero que te sea útil.

https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools

Se produjo un error al compilar "process.py" en el sitio anterior.

python tools/process.py --input_dir data -- operation resize --outp ut_dir data2/resize data/0.jpg -> data2/resize/0.png

Rastreo (llamadas recientes más última):

File "tools/process.py", line 235, in <module> main() File "tools/process.py", line 167, in main src = load(src_path) File "tools/process.py", line 113, in load contents = open(path).read() File"/home/user/anaconda3/envs/tensorflow_2/lib/python3.5/codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: ''utf-8'' codec can''t decode byte 0xff in position 0: invalid start byte

¿Cuál es la causa del error? La versión de Python es 3.5.2.


Lea ( r ) el archivo CSV details.csv y codifíquelo con utf8 . si se produce un error, ignore el error, esto simplemente se realiza mediante el siguiente código.

with open(''details.csv'', ''r'',encoding="utf8", errors=''ignore'') as csvDataFile: csvReader = csv.DictReader(csvDataFile)


Me he encontrado con este hilo cuando sufro el mismo error, después de investigar un poco puedo confirmar, este es un error que ocurre cuando intentas decodificar un archivo UTF-16 con UTF-8.

Con UTF-16, el primer carácter (2 bytes en UTF-16) es una marca de orden de bytes (BOM) , que se utiliza como una pista de decodificación y no aparece como un carácter en la cadena decodificada. Esto significa que el primer byte será FE o FF y el segundo, el otro.

Muy editado después de que descubrí la respuesta real


Python intenta convertir una matriz de bytes ( bytes que se supone que es una cadena codificada por utf-8) en una cadena unicode ( str ). Este proceso, por supuesto, es una decodificación de acuerdo con las reglas utf-8. Cuando intenta esto, encuentra una secuencia de bytes que no está permitida en cadenas codificadas por utf-8 (es decir, este 0xff en la posición 0).

Como no proporcionó ningún código que pudiéramos ver, solo pudimos adivinar el resto.

A partir del seguimiento de la pila, podemos suponer que la acción desencadenante fue la lectura de un archivo ( contents = open(path).read() ). Propongo recodificar esto de una manera como esta:

with open(path, ''rb'') as f: contents = f.read()

Que b en el especificador de modo en open() establece que el archivo se tratará como binario, por lo que el contents seguirá siendo un bytes . Ningún intento de decodificación sucederá de esta manera.


Si es posible, abra el archivo en un editor de texto e intente cambiar la codificación a UTF-8. De lo contrario, hágalo mediante programación a nivel del sistema operativo


Si está en una Mac, compruebe si tiene un archivo oculto, .DS_Store. Después de eliminar el archivo, mi programa funcionó.


Tengo un problema similar. Intento ejecutar un ejemplo en tensorflow / models / Objective_detection y encontré el mismo mensaje. Intenta cambiar Python3 a Python2


Tuve un problema similar a este, terminé usando UTF-16 para decodificar. Mi código está abajo.

with open(path_to_file,''rb'') as f: contents = f.read() contents = contents.rstrip("/n").decode("utf-16") contents = contents.split("/r/n")

esto tomaría el contenido del archivo como una importación, pero devolvería el código en formato UTF. a partir de ahí sería decodificado y separado por líneas.


Usar unicamente

base64.b64decode(a)

en vez de

base64.b64decode(a).decode(''utf-8'')


Use el formato de codificación ISO-8859-1 para resolver el problema.


Use esta solución, eliminará (ignorará) los caracteres y devolverá la cadena sin ellos. Solo use esto si su necesidad es despojarlos, no convertirlos.

with open(path, encoding="utf8", errors=''ignore'') as f:

Usando errors=''ignore'' Simplemente perderás algunos personajes. pero si no le importan, ya que parecen ser caracteres adicionales que se originan en un formato y programación incorrectos de los clientes que se conectan a mi servidor de socket. Entonces es una solución directa fácil. reference


Verifique la ruta del archivo a leer. Mi código seguía dándome errores hasta que cambié el nombre de la ruta para presentar el directorio de trabajo. El error fue:

newchars, decodedbytes = self.decode(data, self.errors) UnicodeDecodeError: ''utf-8'' codec can''t decode byte 0xff in position 0: invalid start byte


si está recibiendo datos de un puerto serie, asegúrese de estar usando la velocidad de transmisión correcta (y las otras configuraciones): decodificando usando ( utf-8 ) pero la configuración incorrecta generará el mismo error

UnicodeDecodeError: el códec ''utf-8'' no puede decodificar el byte 0xff en la posición 0: byte de inicio no válido

para verificar la configuración del puerto serie en el uso de Linux: stty -F /dev/ttyUSBX -a