NorskFirefox Skrevet 3. april 2006 Skrevet 3. april 2006 Hei, Prøver meg litt fram i python, kommet fram til denne lille koden: #!/usr/bin/python # Filename: test.py start = True while start == True: ab = {'thomas' : '[email protected]'} print '\nDet er %d kontakter i adresseboka\n' % len(ab) navn = raw_input('Navn: ') if navn == 'epost': for name, address in ab.items(): print '%s - %s' % (name, address) elif navn == 'exit': start = False else: epost = raw_input('Epost: ') ab[navn] = epost Her vil jeg at det skal lagres variabler med navnet man skriver inn og så legge til epost. Noen som kan hjelpe meg å det kan bli lagra til en fil? Takker for svar som leder til løsning(er)
zeitgeist Skrevet 3. april 2006 Skrevet 3. april 2006 Hei,Prøver meg litt fram i python, kommet fram til denne lille koden: #!/usr/bin/python # Filename: test.py start = True while start == True: ab = {'thomas' : '[email protected]'} print '\nDet er %d kontakter i adresseboka\n' % len(ab) navn = raw_input('Navn: ') if navn == 'epost': for name, address in ab.items(): # print '%s - %s' % (name, address) elif navn == 'exit': start = False else: epost = raw_input('Epost: ') ab[navn] = epost Her vil jeg at det skal lagres variabler med navnet man skriver inn og så legge til epost. Noen som kan hjelpe meg å det kan bli lagra til en fil? Takker for svar som leder til løsning(er) 5860118[/snapback] Før du kan lagre til fil, må du gjøre dataene skrivbare. F.eks slik ab_lines = [] for name, adress in ab.items(): ab_lines.append("%s:%s" % (name, adress)) adressedata = "\n".join(ab_lines) # For å lagre til fil, skriv f.eks file('adressbook.txt', 'w').write(adressedata) da kan du senere lese dem igjen med noe slikt: def read_ab(filename = 'adressbook.txt'): # Bygg dict av "navn:epost"-linjer ab = {} try: ab_lines = file(filename, 'r').readlines() for line in ab_lines: ab[name] = line.split(':').strip() except IOError: pass # Fil ikke opprettet. return ab ab = read_ab()
NorskFirefox Skrevet 3. april 2006 Forfatter Skrevet 3. april 2006 Takk, men forstod det ikke helt.. Kunne du satt det inn i koden min?
zeitgeist Skrevet 3. april 2006 Skrevet 3. april 2006 Takk, men forstod det ikke helt..Kunne du satt det inn i koden min? 5860510[/snapback] Jeg ville ha gjort det litt annerledes. Du kan kikke på dette, det ser ut til å funke. Bare spør hvis det er noe som er uklart osv. import sys def read_ab(filename = 'ab.txt'): # Leser inn navn:email linjer fra fil (hvis den finnes) #og bygger dictionary ab = {} try: ab_lines = file(filename, 'r').readlines() for line in ab_lines: name, address = line.split(':') ab[name.strip()] = address.strip() except IOError: # Fil finnes ikke. return {'thomas' : '[email protected]'} return ab def write_ab(ab, filename = 'ab.txt'): # lager streng av dictinary og skriver til fil ab_lines = [] for name, adress in ab.items(): ab_lines.append("%s:%s" % (name, adress)) file(filename, 'w').write("\n".join(ab_lines)) def add_ab(): # henter adresser fra fil, leser inn nye og lagrer fil. ab = read_ab() print "Tomt Navn- og/eller Epost-felt avslutter.\n\n" try: while True: print "Det er", len(ab), "navn i adresseboken\n" name = raw_input('Navn: ').lower().strip() email = raw_input('Epost: ').lower().strip() if not name or not email: # Lagre og avslutte write_ab(ab) print "Avslutter. Lagret", len(ab), "adresser i fil." break else: ab[name] = email except KeyboardInterrupt: # Ctrl-C sys.exit("\nBruker avsluttet") add_ab()
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå