Tuesday 29 January 2019

python - an arcgisscripting method for sanitizing a filename?


Is there an arcgisscripting method for sanitizing a filename to get rid of characters which Arcgis barfs on, the meek hyphen - for example?



Answer



It turns out there is: ValidateTableName_method and here is how one could use it:


  import arcgisscripting
gp = arcgisscripting.create()
outshape = 'c:/temp/%s.shp' % gp.ValidateTableName('My-Merge-Output')
print outshape


>>> c:/temp/My_Merge_Output.shp

One needs to be careful to only process the filename, and not include the path or extension else periods and slashes will be replaced also:


  outshape = gp.ValidateTableName('c:/temp/My-Merge-Output.shp')
print outshape

>>> c__temp_My_Merge_Output_shp

Don't run validate on an input file though. Some experiments showed that a hyphenated filename is legal on input and illegal on output. Also see the related ValidateFieldName_method



If you need to process path and filename you might try this (see this ESRI Forum thread):


import os, string, arcgisscripting
gp = arcgisscripting.create()

def validateName(inputTablePath):
workspacePath = string.join(inputTablePath.split(os.sep)[0:-1], os.sep)
if inputTablePath[-4:] in (".shp",".dbf",".txt"):
tableNameToValidate = inputTablePath.split(os.sep)[-1][0:-4]
return workspacePath + os.sep + gp.validatetablename(tableNameToValidate, workspacePath) + inputTablePath[-4:]
else:

tableNameToValidate = inputTablePath.split(os.sep)[-1]
return workspacePath + os.sep + gp.validatetablename(tableNameToValidate, workspacePath)

print validateName(r"C:\temp\testthis\why-not-this.shp")
print validateName(r"C:\temp\testthis\_*howboutwhy-not-this.shp")
print validateName(r"C:\temp\testthis\why-not-this.dbf")
print validateName(r"C:\temp\testthis.gdb\why-not-this")


#OUTPUT >>>

#C:\temp\testthis\why_not_this.shp
#C:\temp\testthis\__howboutwhy_not_this.shp
#C:\temp\testthis\why_not_this.dbf
#C:\temp\testthis.gdb\why_not_this

Thank you Chris Snyder, Conrad J. Wyrzykowski, Luke Pinner, Jason Scheirer, Peter Siebert for contributing to this answer and Matt's education. (ESRI-L)


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...