Gå til innhold

Anbefalte innlegg

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)

Lenke til kommentar
Videoannonse
Annonse
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()

Lenke til kommentar
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()


Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...