ASIX-M3-UF3-A2.1- Solucions Exercicis fitxers de text
De wikiserver
La revisió el 15:57, 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()