Python - Ayuda Ejercicio archivos

 
Vista:
sin imagen de perfil
Val: 20
Ha aumentado su posición en 162 puestos en Python (en relación al último mes)
Gráfica de Python

Ayuda Ejercicio archivos

Publicado por Paula (9 intervenciones) el 17/06/2021 01:39:57
Tengo que crear el archivo agenda.txt. Luego hacer un menú que diga
1. Agregar un beneficiario al archivo (preguntando el nombre, cedula y teléfono)
2. Borrar un beneficiario del archivo con su numero de cedula

Tengo problemas con la parte de borrar un beneficiario, ya que no se que tengo que usar, lo intente con .pop y aunque no me sale error no borra el beneficiario del archivo.


pdt: Soy principiante programando en python
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.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda Ejercicio archivos

Publicado por tincopasan (1083 intervenciones) el 17/06/2021 02:29:43
agrega el código que estás intentando usar
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
sin imagen de perfil
Val: 20
Ha aumentado su posición en 162 puestos en Python (en relación al último mes)
Gráfica de Python

Ayuda Ejercicio archivos

Publicado por Paula (9 intervenciones) el 17/06/2021 02:44:48
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
28
29
30
31
32
33
34
archivo = open("agenda.txt","a")
 
print("MENU PRINCIPAL")
print("1. Agregar beneficiario")
print("2. Borrar beneficiario")
 
option = int(input("Que desea hacer: "))
 
 
nombre = ["name"]
id = ["cedula"]
number = ["telefono"]
 
#Agregar un beneficiario
if option == 1:
  archivo = open("agenda.txt", "a")
  name = input("Dijite el nombre: ")
  cedula = input("Dijite la cedula: ")
  telefono = input("Dijite el telefono: ")
  archivo.write(name+";"+cedula+";"+telefono+"\n")
  print("EL BENEFICIARIO HA SIDO AGREGADO AL LISTADO")
  archivo.close()
 
#BORRAR BENEFICIARIO
if option == 2:
  borrar = input("Dijite la cedula de la persona a borrar: ")
  for i in range(len(id)-1,-1,-1):
    if id[i] == borrar:
      nombre.pop(i)
      id.pop(i)
      number.pop(i)
  print("EL USUARIO HA SIDO ELIMINADO DEL LISTADO")
 
archivo.close()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda Ejercicio archivos

Publicado por tincopasan (1083 intervenciones) el 17/06/2021 15:35:48
bueno, hay varias cosas en todo el código a cambiar, pero solo me limitaré a la opción borrar:
como lo estás haciendo no lee los datos del archivo ni los escribe, por lo tanto nunca se modificará.
Veamos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#-*- coding: utf -8 -*-
with open("agenda.txt") as archivo:  #with no necesita cerrar el archivo los hace automaticamente
    contenido= archivo.readlines() #leo el archivo para que sea una lista
    borrar = input("Dijite la cedula de la persona a borrar: ")
    for x in contenido:  #recorro la lista
        k = x.split(";")      #como los datos son una cadena los convierto en otra lista
        if borrar == k[1]:  # si lo ingresado es igual a lo que hay en la posición 1 de la lista
            contenido.remove(x)  #elimina esa lista
            print("EL USUARIO HA SIDO ELIMINADO DEL LISTADO")
 
 
with open("agenda.txt","w") as archivo:
    for k in contenido:     # recorro la nueva lista
        archivo.write(k)     #creo un archivo nuevo con estos datos

todo eso va en reemplazo de lo que hay ahora en option 2 .Espero que entiendas lo que hice sino pregunta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 20
Ha aumentado su posición en 162 puestos en Python (en relación al último mes)
Gráfica de Python

Ayuda Ejercicio archivos

Publicado por Paula (9 intervenciones) el 17/06/2021 16:34:22
ok, ya lo miro aver si lo entiendo, muchas gracias @tincopasan.
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
sin imagen de perfil
Val: 20
Ha aumentado su posición en 162 puestos en Python (en relación al último mes)
Gráfica de Python

Ayuda Ejercicio archivos

Publicado por Paula (9 intervenciones) el 17/06/2021 20:53:35
Use el codigo que me dejaste arriba (B0RRAR USUARIO), pero aun asi no me elimina el usuario del archivo.



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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
archivo = open("agenda.txt", "a")
 
 
print("MENU PRINCIPAL")
print("1. Ver listado ")
print("2. Ver listado filtrado ")
print("3. Agregar beneficiario")
print("4. Buscar beneficiario")
print("5. Borrar beneficiario")
print("6. Salir")
print()
option = int(input("Que desea hacer: "))
 
 
#LEER ARCHIVO
if option == 1:
  with open("agenda.txt", "r") as archivo:
    print(archivo.readlines())
 
 
 
#LISTA FILTRADA
if option == 2:
  datos_buscar = input("Dijite la letra por la que comienza el nombre del beneficiario a buscar: ")
  for i, j in enumerate(datos_usuario):
    busquedad = datos_usuario[i]
    for b in busquedad:
      if b == datos_buscar:
        print(datos_usuario[i])
 
 
 
 
#AGREGAR BENEFICIARIO
if option == 3:
  with open("agenda.txt", "a") as archivo:
    name = input("Dijite el nombre: ")
    cedula = input("Dijite la cedula: ")
    telefono = input("Dijite el telefono: ")
    archivo.write(name+";"+cedula+";"+telefono+"\n")
    print("EL BENEFICIARIO HA SIDO AGREGADO AL LISTADO")
    archivo.close()
 
 
 
#BUSCAR BENEFICIARIO
if option == 4:
  with open ("agenda.txt", "r") as archivo:
    nombre = input("Que nombre desea buscar: ")
    texto = archivo.readlines()
    for linea in texto:
      if nombre in linea.lower():
        datos_buscados = linea.split(";")
        print("NOMBRE: ", datos_buscados[0])
        print("CEDULA: ", datos_buscados[1])
        print("TELEFONO: ", datos_buscados[2])
 
 
#BORRAR BENEFICIARIO
if option == 5:
  with open("agenda.txt") as archivo:
    contenido= archivo.readlines()
    borrar = input("Dijite la cedula de la persona a borrar: ")
    for x in contenido:
      k = x.split(";")
      if borrar == k[1]:
        contenido.remove(x)
        print("EL USUARIO HA SIDO ELIMINADO DEL LISTADO")
 
#SALIR
if option == 6:
  print("HASTA PRONTO")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda Ejercicio archivos

Publicado por tincopasan (1083 intervenciones) el 18/06/2021 03:35:02
¿es un chiste? ni copiaste todo el código que puse antes! te falta:

1
2
3
with open("agenda.txt","w") as archivo:
        for k in contenido:     # recorro la nueva lista
            archivo.write(k)     #creo un archivo nuevo con estos datos
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
Imágen de perfil de javier fiestas
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

Ayuda Ejercicio archivos

Publicado por javier fiestas (313 intervenciones) el 21/06/2021 22:18:01
Buenas he estado viendo varias maneras empecé creando algo así:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# -*- coding: utf-8 -*-
#!/usr/bin/python
import pandas as pd
import os
import io
from io import open
 
def crear_el_fichero():#crea el fichero agenda.txt
    fichero=open("agenda.txt","w",encoding="utf8")
    menu()
    fichero.close()
 
def ver_listado():#muestra listado por linea de todos
    fichero=open("agenda.txt","r",encoding="utf8")
    f=fichero.read()
    print(f)
    fichero.close()
 
def listado_filtrado():#pide inicial del beneficiario y lista todos los beneficiarios con esa inicial
    busca=input('Dime la inicial por la que empieza el nombre de beneficiario: ')#pregunta por la inicial del beneficiario
    with open("agenda.txt","r",encoding="utf8")as fichero:#abre el archivo en modo lectura como variable fichero
        f=fichero.readlines()#almacenamos las lineas en lista en la variable f
    lista=[]#creamos una lista vacia
    for fileline in f:#recorremos las lista de las lineas del readline
        fileline=fileline.replace('\n','')#reemplazamos salto de linea por nada
        fileline=fileline.replace('\t','')#reemplazamos tabulaciones por nada
        lista.append(fileline)#introducimos el recorrido en la lista que teníamos vacia
    lista_iniciales_beneficiarios=[]#ahora creamos una lista para introducir las iniciales
    for i in lista:#recorremos la lista de los nombres
        i=i.split(',')
        iniciales_beneficiarios=i[0][1]#sacamoslas iniciales de los nombre
        lista_iniciales_beneficiarios.append(iniciales_beneficiarios)#los incluimos en la lista sólo de las iniciales
    if busca in lista_iniciales_beneficiarios:#si la inicial preguntada está en la lista...
        posicion=lista_iniciales_beneficiarios.index(busca)#en la variable posicion guardamos el indice que tiene en la lista
        print(lista[posicion])#imprimimos esta posicion en la lista donde se encuentran los nombres completos
 
    fichero.close()
    menu()
 
def agregar_beneficiario():#agrega a los beneficiarios con pequeño cuestionario
    lista=[]
    nombre=input('Dime nombre y apellido del Beneficiario: ')
    cedula=input('Escribe el numero de cedula con su letra separada de un guión: ')
    telefono=int(input('Escribe el telefono del beneficiario: '))
    fichero=open("agenda.txt","a",encoding="utf8")
    fichero.write(' {}, {}, {}. '.format(nombre, cedula, telefono))
    fichero.write('\n')
    fichero.close()
    menu()
 
def buscar_beneficiario():#busca beneficiarios según su numero de cedula(lista con los numeros de cedulas)
    numero_cedula=input('escribe un espacio y el numero de cedula:')
    with open("agenda.txt","r",encoding="utf8")as fichero:
        f=fichero.readlines()
    lista=[]
    for fileline in f:
        fileline=fileline.replace('\n','')
        fileline=fileline.replace('\t','')
        lista.append(fileline)
    #print(lista)
    lista_cedulas=[]
    for i in lista:
        i=i.split(',')
        lista_cedulas.append(i[1])
    if numero_cedula in lista_cedulas:
        posicion=lista_cedulas.index(numero_cedula)
        print('El numero de cedula {} pertenece al siguiente registro: {}\n'.format(numero_cedula,lista[posicion]))
        menu()
    else:
        print('el numero de cedula {} no se encuentra en la lista de beneficiarios\n')
        menu()
 
    #print(lista_cedulas)
 
    fichero.close()
 
def borrar_beneficiario():#orra beneficiario, su cédula y su numero de telefono
    numero_cedula=input('escribe un espacio y el numero de cedula:')
    with open("agenda.txt","r",encoding="utf8")as fichero:
        f=fichero.readlines()
    lista=[]
    for fileline in f:
        fileline=fileline.replace('\n','')
        fileline=fileline.replace('\t','')
        lista.append(fileline)
    #print(lista)
    lista_cedulas=[]
    for i in lista:
        i=i.split(',')
        lista_cedulas.append(i[1])
    if numero_cedula in lista_cedulas:
        posicion=lista_cedulas.index(numero_cedula)
        lista[posicion].remove()
        print('beneficiario borrado')
 
 
def salir():#sale del proigrama
    print('fin del programa')
 
def menu():#con esta funcion muestra el menú a elgir
    print('''
    1. Ver listado
    2. Ver Listado filtrado
    3. Agregar beneficiario
    4. Buscar beneficiario
    5. Borrar beneficiario
    6. Salir
    ''')
    respuesta=int(input('Dime que quieres hacer: '))
    if respuesta==1:
        ver_listado()
    elif respuesta==2:
        listado_filtrado()
    elif respuesta==3:
        agregar_beneficiario()
    elif respuesta==4:
        buscar_beneficiario()
    elif respuesta==5:
        borrar_beneficiario()
    elif respuesta==6:
        salir()
    else:
        print('Eso no es una opción')
        respuesta=int(input('Dime que quieres hacer: '))
 
crear_el_fichero()#una vex creado podemos comentarlo para no estar creandolo todo el rato
menu()
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