Mira este es mi trabajo se trata de ingresar calles y al ingresar te pide la calle q esta al norte, sur, este y oeste, bueno eso sera en un futuro jajajaja tiene dos problemas ingreso la primera calle y me la guarda 2 veces y al querer guardar una tercera me tira error de:
Código consola:
Ver originalTraceback (most recent call last):
File "calles.py", line 86, in <module>
menu()
File "calles.py", line 71, in menu
ingresarCalle()
File "calles.py", line 31, in ingresarCalle
guardar()
File "calles.py", line 83, in guardar
f.write("%s\n" % calle)
IOError: [Errno 9] Bad file descriptor
Y el otro error al cerrar el programa y volverlo abrir me borra el contenido del archivo, aca dejo el codigo completo:
Código Python:
Ver originalclass Calle:
def __init__(self, nombre, norte, sur, este, oeste, estado):
self.nombre = nombre
self.norte = norte
self.sur = sur
self.este = este
self.oeste = oeste
self.estado = estado
def __str__(self):
return "%s %s %s %s %s %s " % (self.nombre, self.norte, self.sur, self.este, self.oeste, self.estado)
filename = 'calles.txt'
f = open(filename, 'w')
listaCalles = []
def ingresarCalle():
nombre = raw_input("Nombre: ")
norte = raw_input("Calle al Norte: ")
sur = raw_input("Calle al Sur: ")
este = raw_input("Calle al Este: ")
oeste = raw_input("Calle al Oeste: ")
estado = False
calle = Calle(nombre, norte, sur, este, oeste, estado)
listaCalles.append(calle)
guardar()
def listarCalles():
print ""
print "Listado de Calles".center(79, "*")
for calle in listaCalles:
print "Nombre de la Calle: %s\nCalle al Norte: %s\nCalle al Sur: %s" % (calle.nombre, calle.norte, calle.sur)
print "Calle al Este: %s\nCalle al Oeste: %s" % (calle.este, calle.oeste)
if calle.estado == True:
print "Calle visitada"
else:
print "Calle sin visitar"
print ""
def buscarCalle():
buscar = raw_input("Ingrese el nombre de la calle a buscar: ")
for nombre in listaCalles:
if buscar == nombre.nombre:
print ""
listarCalles()
else:
print "La Calle no existe\n"
def menu():
while True:
print 'MENU'.center(32, '=')
print '1.- Ingresar una Calle'
print '2.- Buscar Calle'
print '3.- Mostrar todas las Calles'
print '6.- Salir'
op = input('Ingrese una Opcion: ')
if op == 1:
ingresarCalle()
if op == 2:
buscarCalle()
if op == 3:
listarCalles()
if op == 6:
f.close()
break
def guardar():
for calle in listaCalles:
f.write("%s\n" % calle)
menu()