Bienvenue sur IndexError.

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

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

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,292 points)
...