Lees alleen de eerste regel van een bestand?

Hoe krijg je alleen de eerste regel van een bestand als een string met Python?


Antwoord 1, Autoriteit 100%

Gebruik de .readline()METHODE (Python 2 docs , python 3 docs ):

with open('myfile.txt') as f:
    first_line = f.readline()

Enkele opmerkingen:

  1. Zoals opgemerkt in de Documenten, tenzij het de enige regel in het bestand is, wordt de tekenreeks geretourneerd van f.readline()een trailing-newline. Misschien wilt u f.readline().strip()in plaats daarvan om de newline te verwijderen.
  2. De withVerklaring sluit automatisch het bestand opnieuw wanneer het blok eindigt.
  3. De withVerklaring werkt alleen in Python 2.5 en hoger, en in Python 2.5 moet u from __future__ import with_statement
  4. In Python 3 moet u het bestandscodering opgeven voor het bestand dat u opent. Lees meer …

Antwoord 2, Autoriteit 6%

infile = open('filename.txt', 'r')
firstLine = infile.readline()

Antwoord 3, Autoriteit 6%

fline=open("myfile").readline().rstrip()

Antwoord 4, Autoriteit 3%

Om terug te gaan naar het begin van een open bestand en vervolgens de eerste regel terug te sturen, doe dit:

my_file.seek(0)
first_line = my_file.readline()

Antwoord 5, autoriteit 2%

Dit zou het moeten doen:

f = open('myfile.txt')
first = f.readline()

Antwoord 6, autoriteit 2%

first_line = next(open(filename))

Antwoord 7, autoriteit 2%

Veel andere antwoorden hier, maar om preciesde vraag te beantwoorden die u stelde (voordat @MarkAmery de oorspronkelijke vraag ging bewerken en de betekenis veranderde):

>>> 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]

Met andere woorden, als je het bestand al hebt gelezen (zoals je zei) en een groot blok gegevens in het geheugen hebt, voer dan een split() uit op de nieuwe regel om de eerste regel er efficiënt uit te halen teken, eenmalig, en neem het eerste element uit de resulterende lijst.

Merk op dat dit het teken \naan het einde van de regel niet bevat, maar ik neem aan dat je het toch niet wilt (en een bestand met één regel heeft misschien niet eens een). Houd er ook rekening mee dat hoewel het vrij kort en snel is, het wel een kopie van de gegevens maakt, dus voor een echt grote klodder geheugen zou je het misschien niet als “efficiënt” beschouwen. Zoals altijd hangt het ervan af…


Antwoord 8

f1 = open("input1.txt", "r")
print(f1.readline())

Other episodes