https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools
위 사이트에서 “process.py”를 컴파일 할 때 오류가 발생했습니다.
python tools/process.py --input_dir data -- operation resize --outp
ut_dir data2/resize
data/0.jpg -> data2/resize/0.png
역 추적 (가장 최근 통화) :
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
오류의 원인은 무엇입니까? 파이썬 버전은 3.5.2입니다.
답변
파이썬은 바이트 배열 ( bytes
utf-8로 인코딩 된 문자열이라고 가정)을 유니 코드 문자열 ( str
) 로 변환하려고합니다 . 이 과정은 물론 utf-8 규칙에 따른 디코딩입니다. 이 작업을 시도하면 UTF-8 인코딩 문자열 (즉, 위치 0의 0xff)에서 허용되지 않는 바이트 시퀀스가 발생합니다.
우리가 볼 수있는 코드를 제공하지 않았으므로 나머지 부분 만 추측 할 수 있습니다.
스택 추적에서 트리거링 조치가 파일에서 읽은 것으로 가정 할 수 있습니다 ( contents = open(path).read()
). 나는 이것을 다음과 같은 방식으로 코딩 할 것을 제안합니다.
with open(path, 'rb') as f:
contents = f.read()
그건 b
의 모드 지정에 open()
파일을 바이너리로 취급되어야한다고, 그래서 contents
유지됩니다 bytes
. 이런 식으로 디코딩 시도가 발생하지 않습니다.
답변
이 솔루션을 사용하면 문자를 제거하고 무시하고 문자열을 반환합니다. 변환하지 않고 제거해야 할 경우에만 사용하십시오.
with open(path, encoding="utf8", errors='ignore') as f:
사용하면 errors='ignore'
일부 캐릭터 만 잃게됩니다. 그러나 소켓 서버에 연결하는 클라이언트의 잘못된 형식 지정 및 프로그래밍으로 인해 추가 문자 인 것처럼 보이므로 걱정하지 않는다면. 그런 다음 쉬운 직접 솔루션입니다.
참고
답변
이와 비슷한 문제가 있었지만 UTF-16을 사용하여 디코딩했습니다. 내 코드는 다음과 같습니다.
with open(path_to_file,'rb') as f:
contents = f.read()
contents = contents.rstrip("\n").decode("utf-16")
contents = contents.split("\r\n")
파일 내용을 가져 오기로 사용하지만 코드를 UTF 형식으로 반환합니다. 거기에서 그것은 라인에 의해 해독되고 분리 될 것이다.
답변
인코딩 형식 ISO-8859-1 을 사용 하여 문제를 해결하십시오.
답변
동일한 오류가 발생했을 때이 스레드를 발견했습니다. 확인 할 수있는 몇 가지 연구를 수행 한 후 UTF-8 파일을 UTF-8로 디코딩하려고 할 때 발생하는 오류입니다.
UTF-16을 사용하면 첫 번째 문자 (UTF-16의 2 바이트)는 디코딩 순서 로 사용되며 디코딩 된 문자열에 문자로 표시되지 않는 BOM (Byte Order Mark) 입니다. 이는 첫 번째 바이트는 FE 또는 FF이고 두 번째 바이트는 다른 바이트입니다.
실제 답변을 찾은 후에 크게 편집
답변
만 사용
base64.b64decode(a)
대신에
base64.b64decode(a).decode('utf-8')
답변
Mac에있는 경우 숨겨진 파일 (.DS_Store)이 있는지 확인하십시오. 파일을 제거한 후 내 프로그램이 작동했습니다.