Note that there are some explanatory texts on larger screens.

plurals
  1. POendless loop when tkinter is used
    primarykey
    data
    text
    <p>I had a script which worked fine till I added a file query box for user interactivity. It keeps repeating the question and only quits if the following command (shutil.copy2) is forced to crash by making the in/output files the same. Why?</p> <pre><code>import os, xml, arcpy, shutil, datetime, Tkinter,tkFileDialog from xml.etree import ElementTree as et path=os.getcwd() RootDirectory=path arcpy.env.workspace = path Count=0 Generated_XMLs=RootDirectory+'\GeneratedXML_LOG.txt' f = open(Generated_XMLs, 'a') f.write("Log of Metadata Creation Process - Update: "+str(datetime.datetime.now())+"\n") f.close() for root, dirs, files in os.walk(RootDirectory, topdown=False): #print root, dirs for directory in dirs: currentPath=os.path.join(root,directory) os.chdir(currentPath) arcpy.env.workspace = currentPath print currentPath #def Create_xml(currentPath): FileList = arcpy.ListFeatureClasses() zone="_Zone" for File in FileList: Count+=1 FileDesc_obj = arcpy.Describe(File) FileNm=FileDesc_obj.file print FileNm check_meta=os.listdir(currentPath) existingXML=FileNm[:FileNm.find('.')] existingExtension=FileNm[FileNm.find('.'):] print "XML: "+existingXML print check_meta #if existingXML+'.xml' in check_meta: for f in check_meta: if f.startswith(existingXML) and f.endswith('.xml'): print "exists, file name:", f newMetaFile=FileNm+"_2012Metadata.xml" shutil.copy2(f, newMetaFile) </code></pre> <p>Code which causes the loop</p> <pre><code> else: #print "Does not exist" newMetaFile=FileNm+"_BaseMetadata.xml" root = Tkinter.Tk() file = tkFileDialog.askopenfile(parent=root,mode='rb',title='Choose a xml base file to match with: '+File) if file != None: metafile=os.path.abspath(file.name) file.close() print metafile shutil.copy2(metafile,newMetaFile) print "copied" else: shutil.copy2('L:\Data_Admin\QA\Metadata_python_toolset\Master_Metadata.xml', newMetaFile) tree=et.parse(newMetaFile) print "Processing: "+str(File) </code></pre> <p>Rest of working code</p> <pre><code> for node in tree.findall('.//title'): node.text = str(FileNm) for node in tree.findall('.//northbc'): node.text = str(FileDesc_obj.extent.YMax) for node in tree.findall('.//southbc'): node.text = str(FileDesc_obj.extent.YMin) for node in tree.findall('.//westbc'): node.text = str(FileDesc_obj.extent.XMin) for node in tree.findall('.//eastbc'): node.text = str(FileDesc_obj.extent.XMax) for node in tree.findall('.//native/nondig/formname'): node.text = str(os.getcwd()+"\\"+File) for node in tree.findall('.//native/digform/formname'): node.text = str(FileDesc_obj.featureType) for node in tree.findall('.//avlform/nondig/formname'): node.text = str(FileDesc_obj.extension) for node in tree.findall('.//avlform/digform/formname'): node.text = str(float(os.path.getsize(File))/int(1024))+" KB" for node in tree.findall('.//theme'): node.text = str(FileDesc_obj.spatialReference.name +" ; EPSG: "+str(FileDesc_obj.spatialReference.factoryCode)) print node.text projection_info=[] Zone=FileDesc_obj.spatialReference.name if "GCS" in str(FileDesc_obj.spatialReference.name): projection_info=[FileDesc_obj.spatialReference.GCSName, FileDesc_obj.spatialReference.angularUnitName, FileDesc_obj.spatialReference.datumName, FileDesc_obj.spatialReference.spheroidName] print "Geographic Coordinate system" else: projection_info=[FileDesc_obj.spatialReference.datumName, FileDesc_obj.spatialReference.spheroidName, FileDesc_obj.spatialReference.angularUnitName, Zone[Zone.rfind(zone)-3:]] print "Projected Coordinate system" x=0 for node in tree.findall('.//spdom'): for node2 in node.findall('.//keyword'): print node2.text node2.text = str(projection_info[x]) print node2.text x=x+1 tree.write(newMetaFile) f = open(Generated_XMLs, 'a') f.write(str(Count)+": "+File+"; "+newMetaFile+"; "+currentPath+"\n") f.close() # Create_xml(currentPath) </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload