164 votes

Comment lire un fichier dans une liste en Python?

Je suis en première année de fac d'informatique de l'étudiant qui est extrêmement perdu sur cette cession. Nous sommes censés pour inviter un utilisateur à un certain nombre de nombres aléatoires générés et enregistrés dans un fichier. Il nous a donné de la partie. La partie que nous avons à faire est d'ouvrir ce fichier, convertir les numéros dans une liste, puis de trouver la moyenne, la déviation standard, etc, sans l'aide de la simple construit dans les outils python.

Je suis décent en maths, donc j'ai trouvé comment faire tout ce qui suit une liste, mais je ne peux pas comprendre comment obtenir les numéros de fichier et d'en faire une liste. J'ai essayé à l'aide d' open , mais il me donne syntaxe non valide (le nom de fichier que j'ai choisi est "chiffres" et enregistré dans "My Documents" automatiquement, donc j'ai essayé d' open(numbers, 'r') et open(C:\name\MyDocuments\numbers, 'r') , et aucune n'a fonctionné).

286voto

Corey Goldberg Points 15625
with open('C:/path/numbers.txt') as f:
    lines = f.read().splitlines()

cela vous donnera une liste de valeurs (chaînes de caractères) que vous aviez dans votre fichier, avec des retours à la ligne dépouillé.

aussi, regardez vos barres obliques inverses dans windows noms de chemin d'accès, comme ceux-ci sont aussi échapper les caractères dans les chaînes. Vous pouvez utiliser des barres obliques ou doubles barres obliques inverses à la place.

117voto

Srikar Appal Points 26892

Vous pourriez le faire en une seule ligne à l'aide de la Liste de compréhension. Python dans la Belle n'est-ce pas?

data = [line.strip() for line in open("C:/name/MyDocuments/numbers", 'r')]

Remarque, l' .strip() est utilisé pour chaque ligne du fichier pour supprimer \n caractère de saut de ligne, chaque ligne peut avoir.

66voto

phimuemue Points 11644
f = open("file.txt")
lines = f.readlines()

Regardez ici. readlines() renvoie une liste contenant une ligne par élément. Notez que ces lignes contiennent l' \n (saut de ligne-caractère) à la fin de la ligne. Vous pouvez enlever ce saut de ligne-personnage en utilisant l' strip()-méthode. I. e. appelez lines[index].strip() afin d'obtenir la chaîne sans le caractère de saut de ligne.

Comme joaquin noté, n'oubliez pas d' f.close() le fichier.

La conversion de strint de nombres entiers est facile: int("12").

14voto

ohe Points 909

Le pythonic moyen de lire un fichier et de mettre toutes les lignes dans une liste:

from __future__ import with_statement #for python 2.5
with open('C:/path/numbers.txt', 'r') as f:
    lines = f.readlines()

Ensuite, en supposant que chaque ligne contient un nombre,

numbers =[int(e.strip()) for e in lines]

8voto

Mark Ransom Points 132545

Vous avez besoin de passer un nom de fichier de la chaîne d' open. Il y a une complication supplémentaire lorsque la chaîne a \ en elle, parce que c'est une chaîne de caractères spéciaux les caractères d'échappement pour Python. Vous pouvez résoudre ce problème en doublant chaque \\ ou en mettant un r face à la chaîne comme suit: r'C:\name\MyDocuments\numbers'.

Edit: les modifications apportées à La question de la rendre complètement différent de l'original, et depuis aucun d'eux n'était de l'affiche originale, je ne suis pas sûr qu'ils vont garantie. Cependant, il n'est point une chose évidente qui pourrait avoir été oublié, et c'est comment ajouter "Mes Documents" pour un nom de fichier.

Dans une version anglaise de Windows XP, My Documents est en fait C:\Documents and Settings\name\My Documents. Cela signifie que l' open appel devrait ressembler à:

open(r"C:\Documents and Settings\name\My Documents\numbers", 'r')

Je suppose que vous utilisez XP, car vous l'appelez My Documents - il changé dans Vista et Windows 7. Je ne sais pas si il y a un moyen facile de rechercher ce automatiquement en Python.

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