Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Actualizar líneas en un archivo
#1
buenas noches otra vez, me acabo de presentar en este foro y continuando con mi presentación, mi primer pregunta:

tengo que realizar en python un pequeño programa que de una archivo .txt que contiene una lista de 20 números, yo tengo que sumarle una cantidad entera positiva cuando el programa me lo pregunte algo asi

El programa preguntará al usuario "Dame la cantidad de años que han transcurrido", y el usuario introducirá un valor en número entero.

Si, por ejemplo el usuario introduce un 3, deberá sumar un valor 3 a cada uno de los elementos de la lista, y volver a guardarlos en el archivo, sustituyendo los valores anteriores y después leer de nuevo el archivo, me pide hacerlo con el ciclo for

para que si introduzco un numero negativo me arroje un mensa de que no se puede quitar edad y si introduzco algo no numérico de arroje otro mensaje

[*]Para sumarle el valor a cada uno de los elementos del listado, utilice un loop (tip: se recomienda usar la estructura de control de flujo FOR)
[*]El programa deberá tener validaciones para asegurar que funcione correctamente:
  • Si el usuario introduce en los años transcurridos un valor que no es de tipo numérico, deberá mostrar un mensaje de error y finalizar el programa (tip: esta validación se puede hacer con control de excepciones)
  • Si el usuario introduce en los años transcurridos un valor negativo, el programa deberá mostrar un mensaje de error diciendo que no se pueden quitar años al tiempo transcurrido

este es lo que tengo no logro comprender la estructura en este sentido de bucle for combinado con un archivo .txt

Código:
archivo= "C:\\Users\\mario\\Documents\\tareas python\\tarea12_333827\\edades.txt"
contenido= open(archivo, "r+")
print(contenido.read())
cantidad = int(input("Dame la cantidad de años trancurridos:"))
for i in archivo:   
    if cantidad >0:
      archivo=("edades.txt")
      contenido= open(archivo, "r+")
      regresar =edades.write(cantidad)
      print (regresar.read())
    elif cantidad <0:
        print ("No se pueden quitar años al tiempo transcurrido")
       
    else:
        raise ValueError
        print('Error dato no valido')

les agradezco cualquier aportación
Responder
#2
Hola, en principio tenés un problema leyendo el archivo. La forma correcta de leer el archivo línea por línea es esta:

Código:
archivo = "C:\\Users\\mario\\Documents\\tareas python\\tarea12_333827\\edades.txt"
f = open(archivo)
for linea in f:
     # acá el procesamiento de cada línea
f.close()

O también podrías usar f.readlines() si querés tener todas las líneas en una lista. Por otro lado, no te conviene abrir el archivo en modo r+ y leer y escribir simultáneamente. Es más fácil si primero leés el contenido del archivo (abriéndolo como r), hacés los cambios en memoria, y luego volvés a escribir en el archivo (abriéndolo como w).

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
(17-11-2022, 05:29 PM)Francisco escribió: Hola, en principio tenés un problema leyendo el archivo. La forma correcta de leer el archivo línea por línea es esta:

Código:
archivo = "C:\\Users\\mario\\Documents\\tareas python\\tarea12_333827\\edades.txt"
f = open(archivo)
for linea in f:
     # acá el procesamiento de cada línea
f.close()

O también podrías usar f.readlines() si querés tener todas las líneas en una lista. Por otro lado, no te conviene abrir el archivo en modo r+ y leer y escribir simultáneamente. Es más fácil si primero leés el contenido del archivo (abriéndolo como r), hacés los cambios en memoria, y luego volvés a escribir en el archivo (abriéndolo como w).

Saludos
gracias por tu comentario, disculpa que conteste hasta ahorita, cuando uso el readlines, me aparecen seguidos 20\n  17\n y si uso read me aparecen todos en una columna o lista, lo intentare por separado, del procesamiento me queda claro el elif y else, pero cuando quiero hacer que a cada numero se le sume la cantidad que solicito se me borra y me deja el archivo vacio, seguire intentando, y de nuevo gracias por tu respuesta.
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)