Skip to content

Commit b01c6aa

Browse files
authored
Merge pull request mouredev#5949 from raynerpv2022/main
#12 Python and GO
2 parents 811ef43 + 5248970 commit b01c6aa

File tree

2 files changed

+260
-0
lines changed

2 files changed

+260
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package main
2+
3+
import (
4+
"encoding/json"
5+
"encoding/xml"
6+
"fmt"
7+
"io"
8+
"os"
9+
)
10+
11+
// # * IMPORTANTE: Sólo debes subir el fichero de código como parte del ejercicio.
12+
// # *
13+
// # * EJERCICIO:
14+
// # * Desarrolla un programa capaz de crear un archivo XML y JSON que guarde los
15+
// # * siguientes datos (haciendo uso de la sintaxis correcta en cada caso):
16+
// # * - Nombre
17+
// # * - Edad
18+
// # * - Fecha de nacimiento
19+
// # * - Listado de lenguajes de programación
20+
// # * Muestra el contenido de los archivos.
21+
// # * Borrarlo despues
22+
23+
// # XML
24+
25+
type Languages struct {
26+
Item []string `xml: "item"`
27+
}
28+
29+
type Programer struct {
30+
XMLName xml.Name `xml: "Programer"`
31+
Name string `xml:"name"`
32+
Age string `xml:"age"`
33+
Cumple string `xml:"cumple"`
34+
Language Languages `xml:"language"`
35+
}
36+
37+
func ReadXML(fileName string) *Programer {
38+
file, _ := os.Open(fileName)
39+
defer file.Close()
40+
reader, _ := io.ReadAll(file)
41+
var programer *Programer
42+
xml.Unmarshal(reader, &programer)
43+
return programer
44+
45+
}
46+
47+
func WriteXML(fileName string, programer Programer) {
48+
49+
file, _ := os.Create(fileName)
50+
defer file.Close()
51+
output, e := xml.MarshalIndent(programer, "", " ")
52+
if e != nil {
53+
fmt.Println(e)
54+
}
55+
file.Write([]byte(xml.Header))
56+
file.Write(output)
57+
58+
}
59+
60+
//JSON
61+
62+
type LanguagesJ struct {
63+
Item []string `json: "item"`
64+
}
65+
66+
type ProgramerJ struct {
67+
Name string `json:"name"`
68+
Age string `json:"age"`
69+
Cumple string `json:"cumple"`
70+
Language Languages `json:"language"`
71+
}
72+
73+
func ReadJson(file string) *ProgramerJ {
74+
f, _ := os.Open(file)
75+
reader, _ := io.ReadAll(f)
76+
defer f.Close()
77+
var programer *ProgramerJ
78+
json.Unmarshal(reader, &programer)
79+
return programer
80+
81+
}
82+
83+
func WriteJson(file string, programer *ProgramerJ) {
84+
f, _ := os.Create(file)
85+
defer f.Close()
86+
salida, _ := json.MarshalIndent(programer, "", " ")
87+
_, err := f.Write(salida)
88+
if err != nil {
89+
fmt.Println((err))
90+
}
91+
}
92+
93+
func main() {
94+
fileName := "programer.xml"
95+
fileNamej := "programer.json"
96+
programer := Programer{
97+
Name: "juana",
98+
Age: "23",
99+
Cumple: "1.1.1900",
100+
Language: Languages{
101+
[]string{"Python", "GO", "HTML"},
102+
},
103+
}
104+
programerj := ProgramerJ{
105+
Name: "Petra",
106+
Age: "23",
107+
Cumple: "1.1.1900",
108+
Language: Languages{
109+
[]string{"Python", "PASCAL", "JAVA"},
110+
},
111+
}
112+
113+
WriteXML(fileName, programer)
114+
var NewProgramer *Programer
115+
NewProgramer = ReadXML(fileName)
116+
fmt.Printf("XML NAME : %v, \n Nombre : %v \n Edad : %v\n Cumle : %v\n Language : %v\n", NewProgramer.XMLName, NewProgramer.Name, NewProgramer.Age, NewProgramer.Cumple, NewProgramer.Language)
117+
WriteJson(fileNamej, &programerj)
118+
var NewProgramerj *ProgramerJ
119+
NewProgramerj = ReadJson(fileNamej)
120+
fmt.Printf("JSON FILE \n Nombre : %v \n Edad : %v\n Cumple : %v\n Language : %v\n", NewProgramerj.Name, NewProgramerj.Age, NewProgramerj.Cumple, NewProgramerj.Language)
121+
122+
}
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
import xml.etree.ElementTree as ET
2+
import os
3+
4+
5+
# * IMPORTANTE: Sólo debes subir el fichero de código como parte del ejercicio.
6+
# *
7+
# * EJERCICIO:
8+
# * Desarrolla un programa capaz de crear un archivo XML y JSON que guarde los
9+
# * siguientes datos (haciendo uso de la sintaxis correcta en cada caso):
10+
# * - Nombre
11+
# * - Edad
12+
# * - Fecha de nacimiento
13+
# * - Listado de lenguajes de programación
14+
# * Muestra el contenido de los archivos.
15+
# * Borrarlo despues
16+
17+
# XML
18+
19+
print(" **** XML ****")
20+
21+
personal_data = {
22+
"Nombre":"resba",
23+
"Edad":"45",
24+
"Fcha ":"1.1.79"
25+
,"Language":["Python"," go"]
26+
}
27+
28+
root = ET.Element("Personal Data")
29+
30+
for k,v in personal_data.items():
31+
32+
item = ET.SubElement(root, k)
33+
if isinstance(v,list) :
34+
for i in v:
35+
l = ET.SubElement(item,"Language")
36+
l.text = i
37+
else:
38+
item.text = str(v)
39+
40+
41+
tree = ET.ElementTree(root)
42+
tree.write("file.xml")
43+
44+
with open("file.xml") as f:
45+
print(f.read())
46+
47+
# os.remove("file.xml")
48+
49+
50+
print(" **** JSON ****")
51+
import json
52+
personal_data = {"Nombre":"resba", "Edad":45,"Fcha ":"1.1.79","Language":"Python,go"}
53+
with open("file.json","w") as f:
54+
json.dump(personal_data,f,ensure_ascii=False, indent=4)
55+
56+
with open("file.json", "r") as f:
57+
data = json.load(f)
58+
59+
print(data)
60+
# os.remove("file.json")
61+
62+
# EXTRA
63+
64+
65+
# * DIFICULTAD EXTRA (opcional):
66+
# * Utilizando la lógica de creación de los archivos anteriores, crea un
67+
# * programa capaz de leer y transformar en una misma clase custom de tu
68+
# * lenguaje los datos almacenados en el XML y el JSON.
69+
# * Borra los archivos.
70+
# # */
71+
72+
class DAta :
73+
def __init__(self, name, age, cumple, languaje,f) -> None:
74+
self.name = name
75+
self.age = age
76+
self.cumple = cumple
77+
self.language = languaje
78+
self.modified = False
79+
self.file = f
80+
81+
def read_json_data(self):
82+
with open(self.file,"r") as f:
83+
data = json.load(f)
84+
85+
86+
self.name = data["name"]
87+
self.age = str(int(data["age"])+1)
88+
self.cumple = data["cumple"]
89+
self.language = data["language"]
90+
self.modified= True
91+
92+
93+
94+
def write_json(self):
95+
with open(self.file,"w") as f:
96+
json.dump(self.get_data_json(),f, ensure_ascii=False, indent=4)
97+
98+
def get_data_json(self):
99+
return {
100+
"name":self.name,
101+
"age":self.age,
102+
"cumple": self.cumple,
103+
"language":self.language
104+
}
105+
106+
def Print_data(self):
107+
if self.modified :
108+
print(f"{self.name} ha cumplido annos")
109+
print(self.get_data_json())
110+
111+
def remove_file(self):
112+
os.remove(self.file)
113+
114+
115+
116+
117+
118+
print("Datos del PAciente")
119+
print()
120+
n= input("Nombre :")
121+
e = input("Edad :")
122+
fn = input("Fecha nacimiento :")
123+
l = input("Languages (separados por espacio):")
124+
l = l.split()
125+
file = "satochi.json"
126+
personal = DAta(n,e,fn,l, file)
127+
128+
personal.write_json()
129+
personal.read_json_data()
130+
131+
personal.Print_data()
132+
personal.remove_file()
133+
134+
135+
136+
137+
138+

0 commit comments

Comments
 (0)