This is my second script (if you don't include the last time I programmed (20 years ago...)
it's a nasty hack but it works... ------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8" ?> - <!-- This grammar has been deprecated - use FMPXMLRESULT instead --> - <FMPDSORESULT xmlns="http://www.filemaker.com/fmpdsoresult"> <ERRORCODE>0</ERRORCODE> <DATABASE>Workflow01.fp7</DATABASE> <LAYOUT /> - <ROW MODID="40" RECORDID="488"> <pce.project.g>yourSoLuckyJob</pce.project.g> <pce.homePath.g>c:\BaldricsWorkFolder</pce.homePath.g> <pea.elementA_0>FRENCH</pea.elementA_0> </ROW> - <ROW MODID="36" RECORDID="489"> <pce.project.g>yourSoLuckyJob</pce.project.g> <pce.homePath.g>c:\BaldricsWorkFolder</pce.homePath.g> <pea.elementA_0>MT</pea.elementA_0> </ROW> - <ROW MODID="2" RECORDID="491"> <pce.project.g>yourSoLuckyJob</pce.project.g> <pce.homePath.g>c:\BaldricsWorkFolder</pce.homePath.g> <pea.elementA_0>SPANISH</pea.elementA_0> </ROW> </FMPDSORESULT> ------------------------------------------------------------------- from xml.sax import make_parser from xml.sax.handler import ContentHandler import os import shutil class FolderHandler(ContentHandler): def __init__ (self, searchTerm): self.searchTerm= searchTerm; self.isA_5Element, self.ishomePathElement, self.isA_1Element, self.isProjectElement, self.isA_4Element, self.isA_0Element = 0, 0, 0, 0, 0, 0; def startElement(self, name, attrs): if name == 'ROW': self.MODID = attrs.get('MODID',"") self.RECORDID = attrs.get('RECORDID',"") elif name == 'pce.project.g': self.isProjectElement= 1; self.PROJECT = ""; elif name == 'pce.homePath.g': self.ishomePathElement= 1; self.homePath = ""; elif name == 'pea.elementA_0': self.isA_0Element = 1; self.A_0 = ""; def characters (self, ch): if self.isProjectElement == 1: self.PROJECT += ch if self.ishomePathElement== 1: self.homePath += ch if self.isA_0Element == 1: self.A_0 += ch class DirectoryException(Exception): pass FilmScansFolders = self.homePath + '\\' + self.PROJECT + '\\' + 'FILM' + '\\' + 'SCANS' + '\\' + self.A_0 FilmTemplFolders = self.homePath + '\\' + self.PROJECT + '\\' + 'TEMPLATES' dirpath = os.path.join(FilmScansFolders) try: os.makedirs(dirpath) except OSError, e: if e.errno == 17: if not os.path.isdir(dirpath): raise DirectoryException, "'%s' can neither be created nor is it an existing directory" % dirpath else: raise # cannot handle it here try: shutil.copytree('C:\Program Files\Python\TEMPLATES', FilmTemplFolders) print '' except os.error, why: print '' def endElement(self, name): if name == 'pce.project.g': self.isProjectElement= 0 if name == 'pce.homePath.g': self.ishomePathElement= 0 if name == 'pea.elementA_0': self.isA_0Element = 0 searchTerm= '*' parser = make_parser() curHandler = FolderHandler(searchTerm) parser.setContentHandler(curHandler) parser.parse(open('FM_folders.xml')) ------------------------------------------------------------------- The aim (create folders on a network from a database with xml & Python): 1) extract data from xml file (generated by Filemaker database) 2) create complex folder structure (each row of the xml is set of folders, all rows reside in the same home 'project folder' 3) copy a folder into the 'project folder' 4)the python file is called/executed by Filemaker (multi-user) I am hoping people can feedback on areas that this script that clearly needs tidying up. Thanks all, - Rafal Kaniewski EU:UK _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor