Sida 1 av 1

Läsa in textfiler i Python, hur?

Postat: 18 okt 2008, 18:41
av ZerQ
Hej

Jag har börjat leka lite med fil funktioner i python men har fastnat lite vid hur man läser in textfiler med styckes indelning. Jag har sparat och läst in små strängar och tal via file och cPickle funktionen, men försöker jag via cPickle läsa in en textfil med stycken så får jag EOFerror.

Sedan har jag funderingar om classer, jag har gjort en class som skall spara en bilreserdel och då måste följande värden sparas märke, modell, årstal, del, skick, färg, lagerplats samt pris. Jag har då i kontruktorn initierat följande variabler.
self.marke = bilMarke
self.modell = bilModell
self.artal = arsModell
self.del = resDel
self.skick = resSkick
self.farg = resFarg
self.plats = lagerPlats
self.pris = resPris

Dessa värden hämtar jag in och placerar i varje variabel med hjälp av raw_input satser. Det jag inte vet hur jag skall göra är hur jag bäst sparar dessa värden till en fil för att sedan kunna öppna den och söka efter delar.

Någon som vet hur jag skall göra i båda dessa problem?

Re: Läsa in textfiler i Python, hur?

Postat: 18 okt 2008, 18:50
av Lars
För textfiler behövs inte (c)pickle, gör bara något liknande detta:

Kod: Markera allt

for line in open("filnamn"):
   print line
Ovanstående kod läser in textfilen rad för rad.

Re: Läsa in textfiler i Python, hur?

Postat: 18 okt 2008, 19:35
av ZerQ
Har provat det och jag får inte det att fungera. Antingen är det jag som gör fel eller så är min burk knäpp...

Re: Läsa in textfiler i Python, hur?

Postat: 18 okt 2008, 19:40
av Urban Anjar
Får du något felmeddelande eller vad händer?

Re: Läsa in textfiler i Python, hur?

Postat: 18 okt 2008, 19:49
av ZerQ
Ja felmeddelandet låg i min egen skalle, glömde att tala om för python vart jag hade filen... :-X Nu fungerar det som det skall. Då kommer nästa fråga, hur gör jag för att hämta in en mening ifrån användaren som tillåter att man trycker enter för att få flera rader?

Re: Läsa in textfiler i Python, hur?

Postat: 18 okt 2008, 20:44
av Smygis
Det får du skriva en egen funktion för.

typ

Kod: Markera allt

def multiInput(prompt=""):
    print prompt, "Stop input by typing END on a new line."
    data = []
    while True:
        w = raw_input("> ")
        if w == "END":
            return "\n".join(data)
        else:
            data.append(w)

Re: Läsa in textfiler i Python, hur?

Postat: 18 okt 2008, 21:32
av ZerQ
Snygg funktion, kan inte vänta tills jag blir lika duktig att komma på sådana smarta funktioner.

Re: Läsa in textfiler i Python, hur?

Postat: 19 okt 2008, 09:20
av ZerQ
Har en fråga om denna funktion som Smygis skrev åt mig. Raden return "\n".join(data) skickar tillbaka värdet i data och dessutom lägger den till newline tecknet. Detta har jag förstått, dock är jag lite fundersam om denna rad bara lägger till en newline efter sista tecknet eller om denna .join lägger till newline i hela texten som skrivs.

Jag antar av vad jag har läst om .join så lägger den till newline i hela texten, och då antar jag att den lägger dubbla newline på dom ställena som jag har valt att styckindela. Så därför blir texten styckindelad även om det i grunden bara är en vanlig lista.

Re: Läsa in textfiler i Python, hur?

Postat: 19 okt 2008, 09:32
av mcNisse
join lägger strängen som den anropas från mellan varje element i listan. I ditt fall en newline "\n".