Note that there are some explanatory texts on larger screens.

plurals
  1. POAttributeError: __len__ Error with ntpath.py an Tkinter.py
    primarykey
    data
    text
    <p>I get the following error when I run a script and it's changing the directory - how can I bug fix this?</p> <blockquote> <p>Traceback (most recent call last): File "L:\Data_Admin\QA\Metadata_python_toolset\test2\update_Metadata1e.py", line 17, in currentPath=os.path.join(root,directory) File "C:\Python26\ArcGIS10.0\lib\ntpath.py", line 96, in join assert len(path) > 0 File "C:\Python26\ArcGIS10.0\lib\lib-tk\Tkinter.py", line 1722, in <strong>getattr</strong> return getattr(self.tk, attr) AttributeError: <strong>len</strong></p> </blockquote> <p>Full code</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 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: #newMetaFile='new' 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) break else: #print "Does not exist" newMetaFile=FileNm+"_BaseMetadata.xml" print "New meta file: "+newMetaFile+ " for: "+File if newMetaFile.endswith('_BaseMetadata.xml'): print "calling tkinter" 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"+metafile root.destroy else: shutil.copy2('L:\Data_Admin\QA\Metadata_python_toolset\Master_Metadata.xml', newMetaFile) print "Parsing meta file: "+newMetaFile tree=et.parse(newMetaFile) print "Processing: "+str(File) 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() print "change dir 1" print "change dir 2" # 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