POST
|
Please Help... Does anyone have a Python Script file to "Batch Import .e00 Files (w/in Directory/Sub-Directory) python script" for ArcGIS for Desktop 10.2, or can some one help me edit the importe00.py script which is included w/ ArcGIS for Desktop 10.2 (Code listed Below)? I am attempting to create a .py file that will ask the user to select a "input directory" for the .e00 files, that will also search all sub-directories; then ask the user to select an "output directory" for the Coverage files. I'm am extremely new to Python Scripting and really need help... ESRI's importe00.py: '''--------------------------------------------------------------------------- Tool Name: ImportFromE00 Source Name: importe00.py Version: ArcGIS 10.0 Author: Environmental Systems Research Institute Inc. Required Argumuments: An input interchange file (.e00) An output directory (where to put the output) An output name (what to call the output) Description: Imports the contents of an ArcInfo interchange file Notes: - This script wraps ARCGISHOME/bin/import71.exe - The executable only works on Windows with Desktop. ---------------------------------------------------------------------------''' import arcpy, os, subprocess #Convert the directory portion of a path string to short filename style # Note that it is still possible for the name to be too long or to # have some character in it that is not supported by workstation. def getShortName(long_path): # (long_dir, long_name) = os.path.split(long_path) for_cmd = 'for %I in ("' + long_dir + '") do echo %~sI' p = subprocess.Popen(for_cmd, shell=True, stdout=subprocess.PIPE).stdout short_dir = p.readlines()[-1] # last line from for command if p.close(): #This means there was an error calling shell command "for" # #If the incomming full path is short enough and has no spaces, # and the incoming name is short enough, then we can just use # it, otherwise, we need to throw an error. (max length = 122) if (len(long_path)<123) and (long_path.find(" ") == -1) and (len(long_name)<=13): return (long_path) else: #1103 = Error converting directory to short name format arcpy.AddIDMessage("Error", 001103) short_dir = short_dir.rstrip() #Add the unshortened file portion back onto the now-shortened path short_path = os.path.join(short_dir, long_name) return (short_path) def expandWorkspace(filepath): # If the filepath is not absolute, make it so using the arcpy workspace # if os.path.isabs(filepath): return filepath elif arcpy.env.workspace != None: return os.path.normpath(os.path.join(arcpy.env.workspace, filepath)) else: return os.path.normpath(os.path.join(os.getcwd(), filepath)) def hasWriteAccess(): #See if the user has write access to the output directory # os.access() isn't giving reliable results, so we have to # use this alternate approach # folderToCreate = arcpy.CreateScratchName("", "", "Folder", dirParam) try: os.mkdir(folderToCreate) os.rmdir(folderToCreate) return True except: return False # Many errors get caught in tool validation, before execution gets this far. # However, some error conditions cannot be caught there because # validation should not open the .e00 to find out what it contains. # #Try to determine likely causes of errors generated by import71.exe def checkErrors(errorCode): #First check the retval codes # if errorCode == 1: if not hasWriteAccess(): #No need to check for directory existence. Framework already did. #1250 = User does not have write access to output folder. arcpy.AddIDMessage("Error", 1250) elif os.path.lexists(outName): #12 = <value> already exists arcpy.AddIDMessage("Error", 12, outName) elif len(outName) > 122: #1252 = Full path to output may be too long. arcpy.AddIDMessage("Error", 1252) elif len(nameParam) > 13: #1253 = Output name may be too long. arcpy.AddIDMessage("Error", 1253) else: #856 = An error was encountered while executing <value>. arcpy.AddIDMessage("Error", 856, "import71.exe") else: #So far, I haven't been able to generate any errorCode values # other than 1 (tool failed), but just in case... # #1254 = <value> returned an error code of <value> arcpy.AddIDMessage("Error", 1254, "import71.exe", str(errorCode)) def doImport(): try: d = arcpy.GetInstallInfo('desktop') import71exe = os.path.join(d['InstallDir'], "bin", "import71.exe") # /t indicates to run the .exe in DOS mode. retcode = subprocess.call( [import71exe, inName, outName, "/t"], shell=True) except: arcpy.AddIDMessage("Error", 856, "import71") if retcode > 0: checkErrors(retcode) #The main block ############### if not arcpy.GetInstallInfo()['ProductName'] == u'Desktop': # Not running from Desktop, generate error # #1294 = Tool only supported in ArcGIS for Desktop. arcpy.AddIDMessage("Error", 1294, "import71") else: # Running from Desktop, process parameters and execute inName = getShortName(expandWorkspace(arcpy.GetParameterAsText(0))) dirParam = arcpy.GetParameterAsText(1) nameParam = arcpy.GetParameterAsText(2) outName = getShortName(os.path.join(dirParam, nameParam)) # if os.path.exists(inName): doImport() else: #732 = <value>: Dataset <value> does not exist or is not supported arcpy.AddIDMessage("Error", 732, "ImportFromE00", inName) If anyone can help, it would very much appreciated... Thank you in advance. ~Jeremy Lake
... View more
09-20-2013
01:39 PM
|
0
|
1
|
3094
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|