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.pngRastreo (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.
Python intenta convertir una matriz de bytes (un bytes que supone que es una cadena codificada en utf-8) en una cadena Unicode ( str ). Este proceso, por supuesto, es una decodificación de acuerdo con las reglas de utf-8. Cuando intenta esto, encuentra una secuencia de bytes que no está permitida en cadenas codificadas en utf-8 (a saber, este 0xff en la posición 0).
Dado que no proporcionó ningún código que pudiéramos ver, solo pudimos adivinar el resto.
Desde el 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 bytes . Ningún intento de decodificación ocurrirá de esta manera.
Use esta solución, eliminará (ignorará) los caracteres y devolverá la cadena sin ellos. Solo use esto si su necesidad es quitarlos, no convertirlos.
with open(path, encoding="utf8", errors='ignore') as f: Usando errors='ignore' Solo perderá algunos caracteres. pero si no le importan, ya que parecen ser caracteres adicionales que se originan en el formato y la programación incorrectos de los clientes que se conectan a mi servidor de socket. Entonces es una solución directa fácil. referencia
Utilice el formato de codificación ISO-8859-1 para resolver el problema.