Hello All,
I have a script which I'm trying to implement to re-define the projections of all datasets in a directory and its subdirectories. I'm using the define projection tool from data management to do this. Unfortunately, when I run the script, I'm getting an error:

If I try to define the projection in one of these datasets directly through ArcToolbox, I get the following warning:

My guess is that I need to write some error handling into the script in order to dismiss this warning, but I can't find anything anywhere that explains clearly how I might implement this. Anyone have any ideas? Feedback is greatly appreciated!
My code so far:
import os
import arcpy
from arcpy import env
arcpy.env.overwriteOutput = True
workspace = r"C:\Scripts\Redefine Projection"
newProjection = arcpy.SpatialReference(25832) # wkid for 'ETRS_1989_UTM_Zone_32N'
def recursiveProjections(workspace):
""" Function iterates through a workspace and its subfolders using arcpy.da.walk and returns
a tuple containing two lists: 1) list of spatial reference objects of all geographic datasets (including those inside
geodatabases) and 2) a list of filepaths for the geographic datasets. Parameter: target workspace
"""
describeDatasets = []
filesList = []
for dirpath, path, filenames in arcpy.da.Walk(workspace):
for filename in filenames:
desc = arcpy.Describe(os.path.join(dirpath, filename))
describeDatasets.append(desc)
for path, path_names, data_names in arcpy.da.Walk(workspace):
for data_name in data_names:
filesList.append(os.path.join(path, data_name))
return describeDatasets, filesList
def defineProjection(workspace):
""" Function redefines the existing projection for datasets in a workspace. A log file is created listing
the paths of all redefined datasets. Parameter: workspace
"""
# unpack tuple returned by def recursiveProjections into two lists
descriptions, filenames = recursiveProjections(workspace)
# iterate through features and redefine their projections correctly
for feature in descriptions:
arcpy.DefineProjection_management(feature, newProjection)
def main():
defineProjection(workspace)
if __name__ == '__main__':
main()