Despues de unas cuantas horas el resultado a sido este. Nose que les parece si se podria retocar algo?
Código PHP:
# -*- encoding: utf-8 -*-
from xml import*
def peces(arxiu_xml):
"""
Devuelve un diccionario añadiendo el nombre de la pieza leída en el archivo
xml como primer elemento del diccionario y como valor una tupla con la medida
como primer elemento y el peso como segundo elemento de la pieza.
>>> peces("arxiu_peces.xml")
{"crani":("2","5"), "sensor optic":("0.5","0.2")}
"""
bd= {}
arxiu= open(arxiu_xml,"r")
text= arxiu.read()
a= menja_seguent_bloc(text, "peces")
b= a[0]
s= b.strip()
c= s.find(">")
y= c+1
etiqueta= s[0:y]
while s.find(etiqueta)!=-1:
d=menja_seguent_bloc(s,etiqueta[1:c])
f=d[0]
j=f.strip()
g=menja_seguent_bloc(j,"nom")
h=menja_seguent_bloc(g[1],"mida")
i=menja_seguent_bloc(h[1],"pes")
paraula_clau= g[0]
mida=h[0]
pes=i[0]
bd[paraula_clau]=(mida,pes)
t=d[1]
s=t.strip()
return bd
arxiu.close()
def models_de_cap(arxiu_xml):
"""
Devuelve un diccionario añadiendo el nombre del modelo de ningún leído en
el archivo xml como primer elemento del diccionario y como valor una tupla con el
nombre de las piezas necesarias para fabricarlo.
>>> models_de_cap("arxiu.xml")
{"cap de visió":("crani","sensor optic","sensor optic"), "cap de audició":("crani","sensor auditiu","sensor auditiu")}
"""
bd={}
arxiu=open(arxiu_xml,"r")
text=arxiu.read()
a=menja_seguent_bloc(text,"caps")
b=a[0]
s=b.strip()
c=s.find(">")
y=c+1
etiqueta= s[0:y]
while s.find(etiqueta) !=-1:
d=menja_seguent_bloc(s,etiqueta[1:c])
f=d[0]
x=f.strip()
g=menja_seguent_bloc(x,"nom")
h=menja_seguent_bloc(g[1],"peces")
i=h[0]
j=i.strip()
k=j.find(">")
l=k+1
etiqueta2= j[0:l]
bd[g[0]]=()
llista= list(bd[g[0]])
while j.find(etiqueta2)!=-1:
m=menja_seguent_bloc(j, etiqueta2[1:k])
nom_pesa=m[0]
llista.append(nom_pesa)
o=m[1]
j=o.strip()
llista= tuple(llista)
bd[g[0]]= llista
p= d[1]
s= p.strip()
return bd
arxiu.close()
def nom_magatzem(arxiu_xml):
"""
Devuelve un diccionario añadiendo el nombre del almacén como palabra
clave y el valor se una tupla con la capcidad como primer elemento, el peso
máximo como segundo elemento y el tercer elemento se una nueva tupla con el
contenido que será otras tuplas, cada una con el nombre de la pieza y la cantidad.
>>>nom_magatzem("arxiu_magatzem.xml")
{"Magatzem 1":("20","100",{"crani": "2","sensor optic": "8","sensort auditiu": "4"})}
"""
bd= {}
dic={}
arxiu= open(arxiu_xml, 'r')
text= arxiu.read()
a= text.find('>')
b= a+1
etiqueta= text[0:b]
while text.find(etiqueta) != -1:
d= menja_seguent_bloc(text, etiqueta[1:a])
e= d[0]
f= menja_seguent_bloc(e, 'nom')
nom_magatzem= f[0]
g= menja_seguent_bloc(f[1], 'capacitat')
capacitat= g[0]
h= menja_seguent_bloc(g[1], 'pesmaxim')
pesmaxim= h[0]
i= h[1]
j= i.find('>')
k= j+1
etiqueta2= i[0:k]
while i.find(etiqueta2)!=-1:
l=menja_seguent_bloc(i, etiqueta2[1:j])
m= l[0]
n= menja_seguent_bloc(m, 'peca')
nom_pesa= n[0]
o= menja_seguent_bloc(n[1], 'quantitat')
quantitat= o[0]
dic[nom_pesa]= quantitat
l=menja_seguent_bloc(i, etiqueta2[1:j])
i=l[1]
d= menja_seguent_bloc(text, etiqueta[1:a])
text= d[1]
bd[nom_magatzem]= (capacitat, pesmaxim, dic)
return bd
arxiu.close()
def recull_fitxers(arxiu_caps, arxiu_peces, arxiu_magatzem):
"""
Devuelve una tupla donde el primer elemento se un diccionario que cuento la
estructura de los modelos de piezas, el segundo elemento se un diccionario que
cuento la estructura de los modelos de ninguno y el tercer elemento se un
diccionario que cuento la estructura de los modelos de almacén.
>>>recull_fitxers(arxiu_caps, arxiu_peces, arxiu_magatzem)
({'cap de visio':('crani', 'sensor optic', 'sensor optic'), 'cap de audicio':('crani', 'sensor auditiu', 'sensor auditiu')}, {'crani':('2','5'),'sensor optic':('0.5','0.2')},{'magatzem 1':('20','100',(('sensor optic','8'),('sensor auditiu','4')))})
"""
a= peces(arxiu_peces)
b= models_de_cap(arxiu_caps)
c= nom_magatzem(arxiu_magatzem)
return a, b, c