Hvordan læser man en fil til en liste i Python?

Jeg vil bede en bruger om at få genereret et antal tilfældige tal, som skal genskabes og gemmes i en fil. Han gav os den del. Den del, vi skal gøre, er at åbne filen, konvertere tallene til en liste og derefter finde middelværdien, standardafvigelsen osv. uden at bruge de nemme indbyggede Python-værktøjer.

Jeg har prøvet at bruge open, men det giver mig ugyldig syntaks (det filnavn jeg valgte var "numbers" og det blev gemt i "My Documents" automatisk, så jeg prøvede open(numbers, 'r') og open(C:\name\MyDocuments\numbers, 'r') og ingen af dem virkede).

f = open("file.txt")
lines = f.readlines()

Kig forbi her. readlines() returnerer en liste, der indeholder en linje pr. element. Bemærk, at disse linjer indeholder \n (newline-tegn) i slutningen af linjen. Du kan fjerne dette newline-tegn ved at bruge strip()-metoden. Dvs. kald lines[index].strip() for at få strengen uden newline-tegnet.

Som joaquin bemærkede, må du ikke glemme at f.close() filen.

Konvertering af strint til hele tal er let: int("12").

Kommentarer (2)

Du skal sende en filnavnsstreng til open. Der er en ekstra komplikation, når strengen indeholder \, fordi det er et særligt string escape-tegn for Python. Du kan løse dette ved at fordoble hver som \\\ eller ved at sætte et r foran strengen som følger: r'C:\name\MyDocuments\numbers'.

Rediger: Ændringerne af spørgsmålet gør det helt anderledes end det oprindelige, og da ingen af dem er fra den oprindelige plakat, er jeg ikke sikker på, at de er berettigede. Men det gør dog opmærksom på en indlysende ting, som måske er blevet overset, og det'er hvordan man tilføjer "My Documents" til et filnavn.

I en engelsk version af Windows XP er My Documents faktisk C:\Documents and Settings\name\My Documents. Det betyder, at åbne-opkaldet skal se ud som:

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

Jeg formoder, at du bruger XP, fordi du kalder det Mine dokumenter - det er ændret i Vista og Windows 7. Jeg ved ikke, om der er en nem måde at slå dette op automatisk i Python.

Kommentarer (0)
hdl = open("C:/name/MyDocuments/numbers", 'r')
milist = hdl.readlines()
hdl.close()
Kommentarer (2)