https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools
Une erreur s'est produite lors de la compilation de "process.py" sur le site ci-dessus.
python tools/process.py --input_dir data -- operation resize --outp
ut_dir data2/resize
data/0.jpg -> data2/resize/0.png
Traceback (dernier appel le plus récent):
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
Quelle est la cause de l'erreur? La version de Python est 3.5.2.
la source
rb
(je pensais que l'ordre n'avait aucune importance, mais cela semble l'être, au moins dans certains systèmes / versions). J'ai changé ma réponse en conséquence.byte 0xff in position 0
pourrait également signifier que le fichier est encodé en UTF-16, alors vous pouvez le faire à lawith open(path, encoding='utf-16') as f:
place0xff
personnage en position0
? Et c'estUTF-8
encodé.'\xFF'
caractère pur sera encodé en UTF-8 comme'\xC3\xBF'
. UTF-8 encode tous les caractères avec un ensemble MSB utilisant deux caractères. (Voir la sortie deprintf "\xff" | iconv -f latin1 -t utf-8 | xxd
dans un shell.) Un verbatim'\xFF'
au début d'une chaîne encodée en UTF-8 est une erreur de codage (pourrait être appelée une erreur de syntaxe en termes d'UTF-8).Utilisez cette solution pour supprimer (ignorer) les caractères et renvoyer la chaîne sans eux. N'utilisez ceci que si votre besoin est de les dépouiller et non de les convertir.
Utilisation
errors='ignore'
Vous perdrez juste quelques personnages. mais si vous ne vous souciez pas d'eux car ils semblent être des caractères supplémentaires provenant du mauvais formatage et de la programmation des clients se connectant à mon serveur socket. Ensuite, c'est une solution directe facile. référencela source
contents = contents.decode('utf-8', 'ignore')
Source: docs.python.org/3/howto/unicode.html#the-string-typeEu un problème similaire à celui-ci, j'ai fini par utiliser UTF-16 pour décoder. mon code est ci-dessous.
cela prendrait le contenu du fichier comme une importation, mais cela renverrait le code au format UTF. à partir de là, il serait décodé et séparé par des lignes.
la source
with open(path, encoding='utf-16') as f
TypeError: an integer is required (got type str)
. Pourquoi? Les deux fichiers sont binaires et lus commerb
.encoding
n'a de sens que lors de la lecture de texte. Supprimez le 'b' de l'argument mode et réessayez. Pour en savoir plus, consultezUtilisez le format d'encodage ISO-8859-1 pour résoudre le problème.
la source
Je suis tombé sur ce fil lorsque je souffre de la même erreur, après avoir fait des recherches, je peux le confirmer, c'est une erreur qui se produit lorsque vous essayez de décoder un fichier UTF-16 avec UTF-8.
Avec UTF-16, le premier caractère (2 octets en UTF-16) est une marque d'ordre d'octet (BOM) , qui est utilisée comme indice de décodage et n'apparaît pas comme un caractère dans la chaîne décodée. Cela signifie que le premier octet sera FE ou FF et le second, l'autre.
Fortement édité après avoir trouvé la vraie réponse
la source
utiliser seulement
au lieu de
la source
Si vous êtes sur un mac, vérifiez si vous avez un fichier caché, .DS_Store. Après avoir supprimé le fichier, mon programme a fonctionné.
la source
Vérifiez le chemin du fichier à lire. Mon code a continué à me donner des erreurs jusqu'à ce que je change le nom du chemin pour présenter le répertoire de travail. L'erreur était:
la source
si vous recevez des données d'un port série, assurez-vous que vous utilisez le bon débit en bauds (et les autres configurations): le décodage avec ( utf-8 ) mais la mauvaise configuration générera la même erreur
pour vérifier la configuration de votre port série sous Linux, utilisez:
stty -F /dev/ttyUSBX -a
la source
Cela signifie simplement que l'on a choisi le mauvais encodage pour lire le fichier.
Sur Mac, utilisez
file -I file.txt
pour trouver le bon encodage. Sous Linux, utilisezfile -i file.txt
.la source
J'ai le même problème lors du traitement d'un fichier généré à partir de Linux. Il s'avère qu'il s'agissait de fichiers contenant des points d'interrogation.
la source
J'avais un problème similaire.
Résolu par:
Cependant, j'ai eu un autre problème. Certains fichiers html (dans mon cas) n'étaient pas utf-8, j'ai donc reçu une erreur similaire. Lorsque j'ai exclu ces fichiers html, tout fonctionnait sans problème.
Donc, à l'exception de la correction du code, vérifiez également les fichiers que vous lisez, peut-être qu'il y a effectivement une incompatibilité.
la source
Si possible, ouvrez le fichier dans un éditeur de texte et essayez de changer le codage en UTF-8. Sinon, faites-le par programme au niveau du système d'exploitation.
la source
J'ai le même problème. J'essaie d'exécuter un exemple dans tensorflow / models / objective_detection et j'ai rencontré le même message. Essayez de changer Python3 en Python2
la source