https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools
Ocorreu um erro ao compilar "process.py" no site acima.
python tools/process.py --input_dir data -- operation resize --outp
ut_dir data2/resize
data/0.jpg -> data2/resize/0.png
Traceback (última chamada mais recente):
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
Qual é a causa do erro? A versão do Python é 3.5.2.
fonte
rb
(eu pensei que a ordem não era importante, mas parece ser, pelo menos em alguns sistemas / versões). Mudei minha resposta de acordo.byte 0xff in position 0
Também poderia significar o arquivo está codificado em UTF-16, então você pode fazerwith open(path, encoding='utf-16') as f:
em vez0xff
personagem na posição0
? E éUTF-8
codificado.'\xFF'
caractere puro será codificado em UTF-8 como'\xC3\xBF'
. UTF-8 codifica todos os caracteres com um conjunto MSB usando dois caracteres. (Veja a saída deprintf "\xff" | iconv -f latin1 -t utf-8 | xxd
em um shell.) Um texto literal'\xFF'
no início de uma cadeia codificada em UTF-8 é um erro de codificação (pode ser chamado de erro de sintaxe em termos de UTF-8).Use esta solução, ela removerá (ignorará) os caracteres e retornará a string sem eles. Use-o somente se for necessário removê-los e não convertê-los.
Usando
errors='ignore'
Você apenas perderá alguns caracteres. mas se você não se importa com eles, eles parecem caracteres extras originários de uma má formatação e programação dos clientes conectados ao meu servidor de soquete. Então é uma solução fácil e direta. referênciafonte
contents = contents.decode('utf-8', 'ignore')
Fonte: docs.python.org/3/howto/unicode.html#the-string-typeTeve um problema semelhante a este, acabou usando o UTF-16 para decodificar. meu código está abaixo.
isso levaria o conteúdo do arquivo como uma importação, mas retornaria o código no formato UTF. dali seria decodificado e separado por linhas.
fonte
with open(path, encoding='utf-16') as f
TypeError: an integer is required (got type str)
. Por quê? Ambos os arquivos são binários e lidos comorb
.encoding
parâmetro só faz sentido ao ler texto. Solte o 'b' do argumento mode e tente novamente. Leia mais nos documentos: docs.python.org/3/library/functions.html#openUse o formato de codificação ISO-8859-1 para resolver o problema.
fonte
Eu me deparei com esse segmento quando sofria o mesmo erro, depois de fazer algumas pesquisas, posso confirmar, este é um erro que ocorre quando você tenta decodificar um arquivo UTF-16 com UTF-8.
Com UTF-16, o primeiro caráter (2 bytes em UTF-16) é uma BOM (Byte Order Mark) , usada como dica de decodificação e não aparece como um caractere na string decodificada. Isso significa que o primeiro byte será FE ou FF e o segundo, o outro.
Pesadamente editado depois que eu descobri a resposta real
fonte
usarem apenas
ao invés de
fonte
Se você estiver em um mac, verifique se há um arquivo oculto, .DS_Store. Depois de remover o arquivo, meu programa funcionou.
fonte
Verifique o caminho do arquivo a ser lido. Meu código continuou me dando erros até eu alterar o nome do caminho para apresentar o diretório de trabalho. O erro foi:
fonte
se você estiver recebendo dados de uma porta serial, verifique se está usando a taxa de transmissão correta (e as outras configurações): decodificando usando ( utf-8 ), mas a configuração errada gerará o mesmo erro
para verificar sua configuração de porta serial no Linux:
stty -F /dev/ttyUSBX -a
fonte
Significa simplesmente que alguém escolheu a codificação errada para ler o arquivo.
No Mac, use
file -I file.txt
para encontrar a codificação correta. No Linux, usefile -i file.txt
.fonte
Eu tenho o mesmo problema ao processar um arquivo gerado no Linux. Acontece que estava relacionado a arquivos contendo pontos de interrogação.
fonte
Eu tive um problema parecido.
Resolvido por:
No entanto, eu tive outro problema. Alguns arquivos html (no meu caso) não eram utf-8, então recebi um erro semelhante. Quando excluí esses arquivos html, tudo funcionava sem problemas.
Portanto, exceto ao corrigir o código, verifique também os arquivos dos quais você está lendo, talvez haja uma incompatibilidade de fato.
fonte
Se possível, abra o arquivo em um editor de texto e tente alterar a codificação para UTF-8. Caso contrário, faça-o programaticamente no nível do SO.
fonte
Eu tenho um problema similar. Eu tento executar um exemplo em tensorflow / models / aim_detection e recebi a mesma mensagem. Tente mudar Python3 para Python2
fonte