Skip to content

Instantly share code, notes, and snippets.

@YannBouyeron
Last active February 7, 2018 09:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save YannBouyeron/6d32a8ba6bd782106c02c08dfad54ca3 to your computer and use it in GitHub Desktop.
Save YannBouyeron/6d32a8ba6bd782106c02c08dfad54ca3 to your computer and use it in GitHub Desktop.
Python: Lire et écrire un fichier.

Lire et écrire un fichier avec Python 2.7 et avec Python 3

Lire et écrire un fichier avec Python 2.7

Ecrire dans un fichier avec Python 2.7

# coding: utf-8

x = 'salut, ca va ?'

with open ('myfile.txt', 'w') as mf:
	mf.write(x)
	mf.close()

Attention, avec l'option 'w' , si le fichier existe déjà , tout son contenu est écrasé (effacé et réécrit).

Lire un fichier avec Python 2.7

# coding: utf-8

with open ('myfile.txt', 'r') as mf:
	y = mf.read()
	print y
	mf.close()

Résultat dans le shell :

salut, ca va ?

Ecrire à la suite d'un fichier

# coding: utf-8

with open ('myfile.txt', 'a') as mf:
	mf.write('\n')
	mf.write('oui, ca va merci bien')
	mf.close()

with open ('myfile.txt', 'r') as mf:
	z = mf.read()
	print z
	mf.close()

Résultat dans le shell :

salut, ca va ?
oui, ca va merci bien

Lire et écrire un fichier avec Python 3

L'encodage en Python 3

En Python 2.7, les chaînes (str) sont par défaut des arrays d’octets (bytes), et il faut les décoder pour obtenir de l’unicode.

En Python 3, les chaînes (str) sont par défaut de type ‘unicode’, et il faut les encoder pour obtenir un array d’octets (bytes).

Convertir des str unicode en bytes: encode()

>>> ma_chaine = "salut"

>>> type(ma_chaine)
<class 'str'>

>>> ma_chaine_encodee = ma_chaine.encode()

>>> ma_chaine_encodee
b'salut'

>>> type(ma_chaine_encodee)
<class 'bytes'>

Convertir des bytes en str unicode: décode ()

>>> ma_chaine_encodee
b'salut'

>>> type(ma_chaine_encodee)
<class 'bytes'>

>>> ma_chaine_decodee = ma_chaine_encodee.decode()

>>> ma_chaine_decodee
'salut'

>>> type(ma_chaine_decodee)
<class 'str'>

Ecrire un fichier avec Python 3

Il faut encoder la chaine(str) avant de l'écrire dans le fichier

with open('myfile.txt', 'wb') as mf:

	p = """C'est juste un test heé ô alors. """.encode()

	mf.write(p)
	mf.close()

Ecrire à la suite d'un fichier avec Python 3

Il faut encoder la chaine(str) avant de l'écrire dans le fichier

with open('myfile.txt', 'ab') as mf:

	mf.write('\n'.encode())

	p = """C'est encore un test heé ô alors""".encode()

	mf.write(p)
	mf.close()

Lire un fichier

Il faut décoder les bytes pour pouvoir les lire.

with open('myfile.txt', 'rb') as mf:

	t = mf.read()
	t = t.decode()

Résultat dans le Shell :

>>> print(t)
C'est juste un test heé ô alors. C'est encore un test heé ô alors
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment