Skip to content

Commit 5454fe7

Browse files
authored
Merge pull request mouredev#2464 from Chrisdev00/Chrisdev00-branch
#12 - Python
2 parents c987348 + 6e08c88 commit 5454fe7

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
"""
2+
* IMPORTANTE: Sólo debes subir el fichero de código como parte del ejercicio.
3+
*
4+
* EJERCICIO:
5+
* Desarrolla un programa capaz de crear un archivo XML y JSON que guarde los
6+
* siguientes datos (haciendo uso de la sintaxis correcta en cada caso):
7+
* - Nombre
8+
* - Edad
9+
* - Fecha de nacimiento
10+
* - Listado de lenguajes de programación
11+
* Muestra el contenido de los archivos.
12+
* Borra los archivos.
13+
*
14+
* DIFICULTAD EXTRA (opcional):
15+
* Utilizando la lógica de creación de los archivos anteriores, crea un
16+
* programa capaz de leer y transformar en una misma clase custom de tu
17+
* lenguaje los datos almacenados en el XML y el JSON.
18+
* Borra los archivos.
19+
"""
20+
21+
import json
22+
import os
23+
24+
# Crear archivo json
25+
26+
datos_json = {
27+
"Nombre": "Christian",
28+
"Edad": "30",
29+
"Fecha de nacimiento": "01/05/1994",
30+
"Listado de lenguajes": ["Python", "JavaScript", "React"]
31+
}
32+
33+
file_name = "Chrisdev00.json"
34+
35+
with open(file_name, "w") as file_json:
36+
json.dump(datos_json, file_json, indent=4) # (ident=) para que el archivo json tenga una apariencia mas legible con identaciones
37+
38+
# Mostrar el contenido
39+
40+
with open(file_name, "r") as file_json:
41+
lista_datos = json.load(file_json)
42+
43+
print("Datos en el archivo JSON")
44+
for clave, valor in lista_datos.items():
45+
print(f"{clave}: {valor}")
46+
47+
# Borrar el archivo
48+
49+
if os.path.exists(file_name):
50+
#os.remove(file_name) comentamos esta parte para que el ejercicio extra no de error
51+
pass
52+
else:
53+
print("El archivo no existe")
54+
55+
56+
# Crear archivo XML
57+
58+
import xml.etree.ElementTree as ET
59+
60+
root = ET.Element("datos")
61+
62+
nombre = ET.SubElement(root, "nombre")
63+
nombre.text = "Christian"
64+
65+
edad = ET.SubElement(root, "edad")
66+
edad.text = "30"
67+
68+
fecha_nacimiento = ET.SubElement(root, "fecha_nacimiento")
69+
fecha_nacimiento.text = "01/05/1994"
70+
71+
lenguajes = ET.SubElement(root, "Listado_de_lenguajes")
72+
lenguajes.text = "Python, JavaScript, React"
73+
74+
tree_xml = ET.ElementTree(root)
75+
file_name_xml = "Chrisdev00.xml"
76+
77+
tree_xml.write(file_name_xml, encoding="utf-8", xml_declaration=True)
78+
79+
# mostrar datos
80+
81+
tree_xml = ET.parse(file_name_xml)
82+
83+
raiz = tree_xml.getroot()
84+
85+
print("Datos en el archivo XML")
86+
for elemento in raiz:
87+
print(f"{elemento.tag}: {elemento.text}")
88+
89+
# borrar archivo
90+
91+
#os.remove(file_name_xml) comentamos esta parte para que funcione el ejercicio extra
92+
93+
94+
##### -------------------------------- EXTRA -------------------------------------------- ########
95+
96+
97+
98+
class DatosPersonales:
99+
100+
def __init__(self, nombre, edad, fecha_nacimiento, lenguajes):
101+
self.nombre = nombre
102+
self.edad = edad
103+
self.fecha_nacimiento = fecha_nacimiento
104+
self.lenguajes = lenguajes
105+
106+
@classmethod
107+
def leer_json (cls, nombre_archivo_json):
108+
with open(nombre_archivo_json, "r") as file:
109+
datos_jso = json.load(file)
110+
return cls(
111+
datos_jso["Nombre"],
112+
datos_jso["Edad"],
113+
datos_jso["Fecha de nacimiento"],
114+
datos_jso["Listado de lenguajes"],
115+
)
116+
117+
@classmethod
118+
def leer_xml (cls, nombre_archivo_xml):
119+
tree_xml = ET.parse(nombre_archivo_xml)
120+
raiz = tree_xml.getroot()
121+
nombre = raiz.find("nombre").text
122+
edad = raiz.find("edad").text
123+
fecha_nacimiento = raiz.find("fecha_nacimiento").text
124+
lenguajes_str = raiz.find("Listado_de_lenguajes").text
125+
lenguajes = lenguajes_str.split(", ")
126+
#lenguajes = [lenguaje.text for lenguaje in raiz.find("Listado_de_lenguajes")]
127+
return cls(nombre, edad, fecha_nacimiento, lenguajes)
128+
129+
def __str__(self):
130+
return f"Nombre: {self.nombre}\nEdad: {self.edad}\nFecha de nacimiento: {self.fecha_nacimiento}\nLenguajes: {', '.join(self.lenguajes)}"
131+
132+
desde_json = DatosPersonales.leer_json("Chrisdev00.json")
133+
desde_xml = DatosPersonales.leer_xml("Chrisdev00.xml")
134+
135+
print("\nDatos desde JSON:")
136+
print(desde_json)
137+
print("\nDatos desde XML:")
138+
print(desde_xml)
139+
140+

0 commit comments

Comments
 (0)