SanitizeFilename

    Table of contents
    No headers

    I asked if there were an arcgisscripting method for sanitizing a filename to get rid of characters which Arcgis barfs on, the meek hyphen (-) for example. It turns out there is: ValidateTableName_method (http://tinyurl.com/c95ago) 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 http://tinyurl.com/bclybk

    If you need to process path and filename you might try this (see this ESRI Forum thread for a version with proper linewrap):

    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)

        Send feedback