Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Ecriture d'un octet dans un fichier

+1 vote

Voici un petit exemple de code en python :

file=open("./data.txt", "w")
a=0x80chier quelle que soit laffdf
file.write(chr(a))
file.close()

En python2 on écrit bien 0x80 dans data.txt
En python3, on écrit 0xC2, 0x80 (2 octets) => Ca rajoute systématiquement C2 si f[0]> 0x7f.

Un problème d'unicode non ? Comment régler ce problème pour écrire correctement le contenu de "a" dans mon fichier ?

demandé 22-Avr-2016 par pazcal
edité 22-Avr-2016 par max

1 Réponse

+3 votes

Par défaut, Python 3 utilise l'utf8.

Pour changer le format du fichier, utiliser le paramètre encoding de la fonction open:

open('./data.txt', 'w', encoding='ascii')  # ou latin1, ou utf8,…

J'ajouterais que ce code, lancé avec python 2 ou python 3:

file=open("./data.txt", "w")
a=0x80
file.write(chr(a))  # retourne 1, quelque soit la version de python utilisée
file.close()

N'écris qu'un seul octet dans le fichier.

répondu 22-Avr-2016 par lucas (2,340 points)
...