Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I want to be able to overwrite a shapefile if it exists. I think my code needs some tweaking. I am using v10. I am able to delete the actual .shp file but the .dbf, .shx, etc still remain, so if I try to overwrite again, I get an error. How can I remove all the files associated with the shapefile?

DoesItExist = True
geometry_type = "POLYGON"
print "Your shapefile is being generated."
out_path = raw_input("Enter in path to save shape file: ")
out_name = raw_input("Enter in name of shape file: ")

while DoesItExist == True: 
    if (os.path.exists(os.path.join(out_path, out_name))):
        print "This file already exists. Do you wish to overwrite it?"
         choice = raw_input("Y/N:")
    if (choice == 'Y' or choice == 'y'):
        print "File will be over written"
        os.remove(os.path.join(out_path, out_name))
        #arcpy.CreateFeatureclass_management(out_path, out_name, geometry_type)
        DoesItExist = False
    else:
        print "Choose new file name/location!"
        out_path = raw_input("Enter in file path: ")
        out_name = raw_input("Enter in file name: ")

else:
    print "Shapefile created in: " + str(os.path.join(out_path, out_name))
    arcpy.CreateFeatureclass_management(out_path, out_name, geometry_type)
    DoesItExist = False
share|improve this question
2  
You can use arcpy.Delete_management(shapefile) –  Luke Mar 7 '13 at 4:09
    
I think you should work on your acceptance rate –  Emi Mar 9 '13 at 3:27
add comment

2 Answers

You shouldn't have to delete the shapefile. Just add the following lines to your script:

import env
arcpy.env.overwriteOutput = True

That will allow arcpy.CreateFeatureclass_management to overwrite the existing shapefile with all of its associated files (dbf, shx, prj etc.).

share|improve this answer
add comment

There is also the exists function instead of using os. Remember to import env.

import arcpy
from arcpy import env

env.workspace = "d:/myfolder"
fc = "roads.shp"

#Delete feature class if it exists
if arcpy.Exists(fc):
   arcpy.Delete_management(fc)
share|improve this answer
1  
Thanks awesomo for the reminder to import env. I'll update my answer. –  Cyrus Mar 7 '13 at 0:47
    
oh wow...thanks so much. My error was in forgetting to include/import env. smh@self. Thanks again! –  user1898629 Mar 7 '13 at 15:05
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.