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.
fuente
rb
(pensé que el orden no tenía importancia, pero parece ser, al menos en algunos sistemas / versiones). Cambié mi respuesta en consecuencia.byte 0xff in position 0
también podría significar que el archivo está codificado en UTF-16, entonces puede hacerlo en suwith open(path, encoding='utf-16') as f:
lugar0xff
personaje en la posición0
? Y estáUTF-8
codificado.'\xFF'
carácter puro se codificará en UTF-8 como'\xC3\xBF'
. UTF-8 codifica todos los caracteres con un conjunto MSB usando dos caracteres. (Vea la salida deprintf "\xff" | iconv -f latin1 -t utf-8 | xxd
en un shell.) Una palabra'\xFF'
al comienzo de una cadena codificada UTF-8 es un error de codificación (podría llamarse un error de sintaxis en términos de UTF-8).Use esta solución, eliminará (ignorará) los caracteres y devolverá la cadena sin ellos. Solo use esto si su necesidad es despojarlos, no convertirlos.
Usando
errors='ignore'
Solo perderás algunos personajes. pero si no te 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. referenciafuente
contents = contents.decode('utf-8', 'ignore')
Fuente: docs.python.org/3/howto/unicode.html#the-string-typeTuve un problema similar a este, terminé usando UTF-16 para decodificar. Mi código está abajo.
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.
fuente
with open(path, encoding='utf-16') as f
TypeError: an integer is required (got type str)
. ¿Por qué? Ambos archivos son binarios y se leen comorb
.encoding
solo tiene sentido al leer texto. Suelte la 'b' del argumento de modo e intente nuevamente. Lea más en los documentos: docs.python.org/3/library/functions.html#openUse el formato de codificación ISO-8859-1 para resolver el problema.
fuente
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 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
fuente
Usar unicamente
en vez de
fuente
Si está en una Mac, compruebe si tiene un archivo oculto, .DS_Store. Después de eliminar el archivo, mi programa funcionó.
fuente
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:
fuente
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
para verificar la configuración del puerto serie en el uso de Linux:
stty -F /dev/ttyUSBX -a
fuente
Simplemente significa que uno eligió la codificación incorrecta para leer el archivo.
En Mac, use
file -I file.txt
para encontrar la codificación correcta. En Linux, usefile -i file.txt
.fuente
Tengo el mismo problema al procesar un archivo generado desde Linux. Resulta que estaba relacionado con archivos que contienen signos de interrogación.
fuente
Tuve un problema similar.
Resuelto por:
Sin embargo, tuve otro problema. Algunos archivos html (en mi caso) no eran utf-8, por lo que recibí un error similar. Cuando excluí esos archivos html, todo funcionó sin problemas.
Entonces, excepto por arreglar el código, verifique también los archivos que está leyendo, tal vez haya una incompatibilidad allí.
fuente
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 programáticamente a nivel del sistema operativo.
fuente
Tengo un problema similar. Intento ejecutar un ejemplo en tensorflow / models / Objective_detection y encontré el mismo mensaje. Intenta cambiar Python3 a Python2
fuente