46 votes

Slurp de fichier Python

Existe-t-il une ligne pour lire toutes les lignes d'un fichier en Python, plutôt que la norme:

 f = open('x.txt')
cts = f.read()
f.close()
 

On dirait que cela se fait si souvent qu'il doit y avoir un one-liner. Des idées?

110voto

Alex Martelli Points 330805
f = open('x.txt').read()

si vous ne voulez qu'une seule chaîne, ou

f = open('x.txt').readlines()

si vous voulez une liste de lignes. À la fois ne garantit pas que le fichier est immédiatement fermé (dans la pratique, il sera immédiatement fermé dans le courant Disponible, mais fermé "seulement lorsque le garbage collector est à elle" en Jython, IronPython, et probablement une version future de Disponible).

Un plus solide approche (2.6+, ou 2,5 avec un from __future__ import with_statement) est

with open('x.txt') as x: f = x.read()

ou

with open('x.txt') as x: f = x.readlines()

Cette variante N'garantir la fermeture immédiate du fichier à droite après la lecture.

1voto

Lutz Prechelt Points 470

Si vous êtes sur Python3, assurez-vous de respecter le codage d'entrée de votre fichier, par exemple:

 import codecs
with codecs.open(filename, 'r', encoding="utf8") as file:
    cts = file.read()
 

Recherchez la liste des noms de codec dans la liste de codecs Python3 . (Le mécanisme est également recommandé pour Python2 lorsque vous attendez une entrée non-ASCII.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X