Comment obtiendriez-vous uniquement la première ligne d'un fichier sous forme de chaîne avec Python?
Comment obtiendriez-vous uniquement la première ligne d'un fichier sous forme de chaîne avec Python?
Réponses:
Utilisez la .readline()
méthode ( python 2 documents , python 3 docs ):
with open('myfile.txt') as f:
first_line = f.readline()
Quelques notes:
f.readline()
contiendra une nouvelle ligne de fin. Vous souhaiterez peut-être utiliser à la f.readline().strip()
place pour supprimer la nouvelle ligne.with
instruction ferme automatiquement le fichier à la fin du bloc.with
instruction ne fonctionne que dans Python 2.5 et versions ultérieures, et dans Python 2.5 vous devez utiliserfrom __future__ import with_statement
mod_wsgi
).
infile = open('filename.txt', 'r')
firstLine = infile.readline()
with
est meilleure.
fline=open("myfile").readline().rstrip()
rstrip()
supprime le caractère de nouvelle ligne.
Cela devrait le faire:
f = open('myfile.txt')
first = f.readline()
Pour revenir au début d'un fichier ouvert, puis renvoyer la première ligne, procédez comme suit:
my_file.seek(0)
first_line = my_file.readline()
Beaucoup d'autres réponses ici, mais pour répondre précisément à la question que vous avez posée (avant que @MarkAmery ne modifie la question d'origine et n'en change le sens):
>>> f = open('myfile.txt')
>>> data = f.read()
>>> # I'm assuming you had the above before asking the question
>>> first_line = data.split('\n', 1)[0]
En d'autres termes, si vous avez déjà lu le fichier (comme vous l'avez dit) et que vous avez un gros bloc de données en mémoire, alors pour en obtenir la première ligne efficacement, faites un split () sur le caractère de nouvelle ligne, une fois uniquement et prenez le premier élément de la liste résultante.
Notez que cela n'inclut pas le \n
caractère à la fin de la ligne, mais je suppose que vous ne le voulez pas de toute façon (et un fichier sur une seule ligne peut même ne pas en avoir). Notez également que bien qu'il soit assez court et rapide, il fait une copie des données, donc pour une très grande quantité de mémoire, vous ne pouvez pas le considérer comme "efficace". Comme toujours, cela dépend ...
.read()
doit être appelé en premier.
f1 = open("input1.txt", "r")
print(f1.readline())