ASIX-M3-UF3-A2.1- Solucions Exercicis fitxers de text
De wikiserver
La revisió el 15:58, 27 abr 2023 per Jmoreno (Discussió | contribucions)
1. Fes un programa que crei un diccionari en les dades dels empleats del fitxer de text empleats.txt. Y a continuació, el recorri mostrant les seves dades.
print("Un programa que cree un diccionario en los datos de los empleados del archivo de texto.\n")
# Crear un diccionario vacío para almacenar los datos de los empleados
empleados = {}
# Abrir el fichero para leer
fichero = open("empleats.txt", "r")
# Leer cada linea en el fichero
for i in fichero:
# Dividir la línea (i) en campos utilizando el punto y coma como separador
entrada = i.strip().split(';')
# Extraer el id, nombre, apellidos y sueldo de los campos
id = entrada[0]
nombre = entrada[1]
apellidos = entrada[2]
sueldo = int(entrada[3])
# Crear un list con nombre, apellidos y sueldo para cada entrada
empleado_list = [nombre, apellidos, sueldo]
# Añadir una lista al diccionario
empleados[id] = empleado_list
# Cerrar el fichero
fichero.close()
# Imprimir el diccionario
print("{:<4} {:<10} {:<11} {:<8}".format("Id", "Nombre", "Apellidos", "Sueldo"))
print("-" * 34)
for id, data in empleados.items():
print("{:<4} {:<10} {:<11} {:<8}".format(id, data[0], data[1], data[2]))
2. Per aquest exercici, crea prèviament un fitxer de text, que contingui només un número. Fes un mètode que pugui rebre 0, 1 o 2 paràmetres.
import sys
print("Un programa con parámetros.\n")
file = "UF3-A2.1-02.txt"
# Obtener una lista de argumentos (el primer argumento es el nombre del propio script, no hace falta)
args = sys.argv[1:]
# Contar el número de argumentos
num_args = len(args)
# Abrir fichero para escribir
fichero = open(file, "r+")
# Leer primer linea
primera_linea = fichero.readline()
# Volver a principio del fichero
fichero.seek(0)
try:
numero = int(primera_linea)
except ValueError:
print("La primera línea del fichero no contiene ningún número.")
exit()
# Procesar el resultado según los argumentos
if num_args == 0:
# Si no se dan argumentos
print(f"En el archivo {file} hay un número: {numero}.")
elif num_args == 1:
# Si solo se da 1 argumento
if args[0] == "inc":
print(f"El valor aumentado es ahora: {numero + 1}")
fichero.writelines(str(numero + 1))
elif args[0] == "dec":
print(f"El valor reducido es ahora: {numero - 1}")
fichero.writelines(str(numero - 1))
else:
print(f"Argumento {args[0]} desconocido.")
elif num_args == 2:
# Si solo se da 2 argumentos
try:
# Convertir args[1] a entero
arg1_numero = int(args[1])
if args[0] == "inc":
print(f"El valor aumentado es ahora: {numero + arg1_numero}")
fichero.writelines(str(numero + arg1_numero))
elif args[0] == "dec":
print(f"El valor reducido es ahora: {numero - arg1_numero}")
fichero.writelines(str(numero - arg1_numero))
else:
print(f"Argumento {args[0]} desconocido.")
except ValueError:
# Si la conversión falló, entonces no es un número entero.
print(f"El argumento {args[1]} no es un número entero.")
else:
print("Demasiados argumentos.")
# Cerrar el fichero
fichero.close()
3. Fes un mètode per xifrar un fitxer de text. Rebrà com a paràmetre un fitxer de text i crearà un altre, afegint al nom de l'original "_cod" i amb la mateixa extensió. L'algoritme de xifrat consisteix en.
import os
print("Programa de cifrado de archivos.\n")
# Función para cifrar archivo
def encrypt(file):
# Abrir el fichero para leer
fichero = open(file, "r")
# Leer contenido del fichero
contenido = fichero.read()
# Crear contenido encryptado
contenido_encryptado = ''
for i in contenido:
if i.islower():
# Cifrar caracteres de la "a" a la "z"
encryptado_i = (ord(i) - 11)
elif i.isupper():
# Cifrar caracteres de la "A" a la "Z"
encryptado_i = (ord(i) + 15)
elif i.isdigit():
# Cifrar caracteres del "0" al "9"
encryptado_i = (ord(i) + 13)
else:
# Dejar otros caracteres sin cambios
encryptado_i = ord(i)
contenido_encryptado += chr(encryptado_i)
# Crear un nuevo fichero
# Esta línea es necesaria si hay varios puntos en el nombre del archivo.
fichero_parts = file.rsplit('.', 1)
cod_fichero = '_cod.'.join(fichero_parts)
with open(cod_fichero, 'w') as cod:
# Escribir contenido cifrado en un archivo nuevo
cod.write(contenido_encryptado)
# Cerrar fichero
fichero.close()
#file = "UF3-A2.1-03.txt"
file=input("Especifique el archivo que desea cifrar: ")
if os.path.exists(file):
encrypt(file)
print("La tarea se ha completado.")
else:
print(f"El fichero {file} no existe.")