Comment voulez-vous obtenir uniquement la première ligne d'un fichier sous forme de chaîne avec Python?
Utilisez la méthode .readline()
( Docs Python 2 , Docs Python ):
with open('myfile.txt') as f:
first_line = f.readline()
Quelques notes:
f.readline()
contiendra une nouvelle ligne. Vous souhaiterez peut-être utiliser f.readline().strip()
à la place pour supprimer la nouvelle ligne.with
ferme automatiquement le fichier à la fin du bloc.with
ne fonctionne que dans Python 2.5 et versions ultérieures, et dans Python 2.5, vous devez utiliser from __future__ import with_statement
infile = open('filename.txt', 'r')
firstLine = infile.readline()
fline=open("myfile").readline().rstrip()
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()
first_line = next(open(filename))
Beaucoup d'autres réponses ici, mais pour répondre précisément la question que vous avez posée (avant @MarkAmery a édité la question initiale et modifié 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 obtenir efficacement la première ligne, effectuez un split () sur le caractère de nouvelle ligne, une fois seulement, et prenez le premier élément de la liste résultante.
Notez que cela n'inclut pas le caractère \n
à la fin de la ligne, mais je suppose que vous n'en voulez pas quand même (et un fichier simple ligne peut même n'en avoir aucun). Notez également que bien que ce soit assez court et rapide, il crée une copie des données. Par conséquent, pour une quantité de mémoire vraiment importante, vous ne le jugerez peut-être pas "efficace". Comme toujours, ça dépend ...