#!/usr/bin/python
from xml.sax.saxutils import XMLGenerator
import os,sys,datetime
class dir2xml:
def __init__(self,filename="tree_%s.xml"%datetime.date.today()):
self.filename=filename
try:
self.fh=open(filename,"w")
except IOError,error:
print error.err
return error.err
try:
self.xml=XMLGenerator(self.fh)
except:
print "Error creating XML object"
return -1
def __del__(self):
self.fh.close()
def toxml(self,dir_):
self.xml.startElement("directory",{"dirname":dir_})
items=os.listdir(dir_)
for item in items:
fullname=os.path.join(dir_,item)
if os.path.isdir(fullname):
self.toxml(fullname)
else:
ext=item.split(".")
self.xml.startElement("file",{"size":str(os.path.getsize(fullname)),"type":ext[-1]})
self.xml.characters(item)
self.xml.endElement("file")
self.xml.endElement("directory")
a=dir2xml()
a.toxml(sys.argv[1])
#!/usr/bin/python
from xml.dom import minidom
import os,sys,datetime
class dir2xml:
def __init__(self,filename="tree_%s.xml"%datetime.date.today()):
self.filename=filename
try:
self.fh=open(filename,"w")
except IOError,error:
print error.err
return error.err
try:
self.dom=minidom.Document()
except:
print "Error creating XML object"
return -1
def __del__(self):
self.fh.close()
def toxml(self,dir_):
e1=self.dom.createElement("Directory")
e1.setAttribute("dirname",dir_)
self.dom.appendChild(e1)
items=os.listdir(dir_)
for item in items:
fullname=os.path.join(dir_,item)
if os.path.isdir(fullname):
self.toxml(fullname)
else:
ext=item.split(".")
e2=self.dom.createElement("file")
e2.setAttribute("size",str(os.path.getsize(fullname)))
e2.setAttribute("type",ext[-1])
e2.appendChild(self.dom.createTextNode(item))
e1.appendChild(e2)
return self.dom
a=dir2xml()
xml=a.toxml(sys.argv[1])
print xml.toprettyxml()
xml.dom.HierarchyRequestErr: two document elements disallowed
Что забавно, нарыл вот эту ссылку: http://code.activestate.com/recipes/305313/ уже после того как сначала сюда вопрос запостил, но тоже выдаёт только список файлов в директории первого уровня.
Прошу совета, как можно данную проблему решить ?
Спасибо.