Hur läser in data från fil (Python).

Permalänk
Medlem

Hur läser in data från fil (Python).

Hej, vill läsa in en fil (bostader.txt), lägga till rader och spara på ny fil (utskrift.txt) och hoppas nu att någon mer kunnig kan ge ledtrådar/tips kring detta.

Permalänk
Medlem

Du bör verkligen lägga python-kod innanför kod-taggar [ CODE] - kan bli helt omöjligt att förstå koden rätt om inte indenteringen är där.

Dessutom uppstår säkert felet du talar om i din klass "Index" när du parsar raderna. Tänk vad händer t.ex. om en rad du läser in inte innehåller alla fält? Din kod bör kunna hantera detta.

Permalänk
Medlem

Tack för svar, behöver hjälp att skapa ett fungerande program av prototypen nedan. Programmet ska hämta rader från fil, lägga till månadskostnad, kvadratpris och skriva ut detta på ny fil enligt följande:

Bostader.txt
UPPSALA/2300000/90/4436/018-685800/Norbyvägen 46
ÅRE/52/35000052/0/0647-51100/Ottsjö Fårhagsvägen 11

Utskrift.txt
Område: UPPSALA
Pris: 2,300,000 kr
Boarea: 90 m²
Avgift: 4436 kr/mån
Tel: 018-685800
Gatuadress: Norbyvägen 46
Månadskostnad: 5536kr
Kvadratmeterkostnad: 23000 kr

class House: # Klass som beskriver ett bostadsobjekt. # Initierar attributen för bostadsobjekt. def __init__(self, zone, price, area, rent, phn, adress): self.zone= zone # bostadsområde self.price= price # bostadspris self.area= area # boarea self.rent= rent # hyra self.phn= phn # telefonnummer self.adress= adress # bostadsadress # Beräknar månadskostnaden. def month(self): month= rent+((self.price-self.stake)*(rate/100)*(1-rebate/100)/12) return month # Beräknar pris/meter2. def meter(self): meter= price/area return meter # Returnerar en sträng som beskriver bostadsobjektet. def __str__(self): info= (self.zone, self.price, self.area, self.rent, self.phn, self.adress) return info class Index: # Klass som beskriver bostadsindex. # Initierar attribut för index och listar bostadsobjekt från fil. def __init__(self, housefile): self.houses= list() # Lista över samtliga bostäder. file= open(housefile, 'rU') for line in file: parts = line.strip().split('/') if (len(parts)>=6): house= House(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5]) self.houses.append(house) file.close() # Sparar bostadsindex i en fil för utskrift. def save(self, housefile): file = open('c:/Users/Anderen/Desktop/printing.txt', 'wU') for house in self.houses: file.write(house.self.zone, self.price, self.area, self.rent, self.phn, self.adress) file.write('\n') file.close() #### HUVUDPROGRAM HOUSEFILE= ('c:/python32/boston.txt') # Lagrar bostad.txt på variabeln HOUSEFILE. index= Index(HOUSEFILE) print('Välkommen till Mäklarkuling, var god och fyll i dina uppgifter.\n') # Presenterar programmet. rate= float(input('Ange aktuell bankränta (%): ')) # Läser in ränta. stake= int(input('Ange kontantinsats (kr): ')) # Läser in kontantinsats. rebate= float(input('Ange aktuell ränteavdrag(%): ')) # Läser in ränteavdrag. # TEST: Skriver ut alla bostadsobjekt. print ('Bostader:', len(index.houses)) for house in index.houses: print ('house') index.save(HOUSEFILE)