Python - Manejo de archivos y listas Python

 
Vista:

Manejo de archivos y listas Python

Publicado por Aylen (1 intervención) el 01/02/2019 16:27:45
Tengo un archivo txt con paises y habitantes.

Argentina, 50538000
Mexico, 25003045
Nicaragua, 10033009
Chile 15473100
España,30500521
Brasil, 40382909
Bolivia, 11384230
Estados Unidos, 35922456
Rusia, 65690234

En el cual tengo que ir actualizando la cantidad de habitantes por pais. Mi codigo es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
lista = [] #Lista vacia
pais=input("Elegir pais que desea actualizar") #Elegir el pais
habitantes=int(input("Ingresar la cantidad de nuevos habitantes"))#Cantidad de habitantes
pais= str()
habitantes=int()
archivo= open("registros.txt", "r")
linea= archivo.readlines()
for linea in archivo:
    if pais in linea:
        contenido += pais + "," + habitantes + "\n"
    else:
        contenido += linea
 
print(contenido)
archivo.close()

Mi problema es que cuando lo ejecuto el programa no me tira ningun error pero la informacion que me devuelve es erronea, quiero saber que esta mal planteado y como podria mejorarlo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.195
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Manejo de archivos y listas Python

Publicado por tincopasan (605 intervenciones) el 01/02/2019 23:48:34
hola:
te ayudo porque has hecho muy bien en intentar un código, aunque no esté del todo funcional.En este ejercicio, dado que el archivo es insignificante te muestro una forma, ahora te aviso que si el archivo fuese inmenso esto no sería lo mejor, sino trabajar con csv u otros.
El código será algo distinto al tuyo,pero es solo por cuestión de optimizar, aunque le falta hacerlo, es para que se entienda facil.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#-*- coding: utf -8 -*-
 
lista = [] #Lista vacia
pais=input("Elegir pais que desea actualizar: ") #Dejar espacio para que no se vea tan feo
habitantes=int(input("Ingresar la cantidad de nuevos habitantes: "))# igual
contenido = pais + ", "+ str(habitantes)
#pais= str()  #ya es una cadena
#habitantes=int()  #lo mismo, ya esta definido como entero
#archivo= open("registros.txt", "r") # esta forma es mala la mejor es 
try:
    with open ("registros.txt") as archivo:
       paises=archivo.read().splitlines()
        for cada in paises:
            if pais in cada:
                lista.append(contenido)
            else:
                lista.append(cada)
except FileNotFoundError:
    print("Error al intentar leer el archivo")
 
for x in lista:
    print(x)  #hasta acá sin sobreescribir el archivo
 
with open ("registros.txt","w") as archivo:  #guarda desde acá porque sobreescribe el archivo original
    for pais in lista:
        archivo.write(pais)
        archivo.write("\n")

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar