J'ai une boucle python assez simple qui appelle quelques fonctions et écrit la sortie dans un fichier. Pour ce faire, crée un dossier et enregistre le fichier dans ce dossier.Problème lors de la réexécution du programme
Lorsque je lance le programme pour la première fois avec un nom de fichier unique, il fonctionne correctement. Cependant, si j'essaie de le relancer, ça ne marchera pas et je ne comprends pas pourquoi. Je suis tout à fait certain que ce n'est pas un problème d'écraser le fichier, car je supprime le dossier avant de le réexécuter, et c'est le seul endroit où le fichier est stocké. Y a-t-il un concept que je comprends mal?
Le fichier problématique est 'buff1.shp'. J'utilise Python 2.5 pour effectuer des analyses dans ArcGIS
Merci pour tout conseil (y compris des suggestions sur la façon d'améliorer mon style de codage). Une autre remarque est que mes boucles n'utilisent actuellement qu'une seule valeur car je suis en train de tester cela pour le moment.
# Import system modules
import sys, string, os, arcgisscripting, shutil
# Create the Geoprocessor object
gp = arcgisscripting.create()
# Load required toolboxes...
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Spatial Statistics Tools.tbx")
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Analysis Tools.tbx")
# specify workspace
gp.Workspace = "C:/LEED/Cities_20_Oct/services"
path = "C:\\LEED\\Cities_20_Oct\\services\\"
results = 'results\\'
os.mkdir(path + results)
newpath = path + results
# Loop through each file (0 -> 20)
for j in range(0,1):
in_file = "ser" + str(j) + ".shp"
in_file_2 = "ser" + str(j) + "_c.shp"
print "Analyzing " + str(in_file) + " and " + str(in_file_2)
#Loop through a range of buffers - in this case, 1,2
for i in range(1,2):
print "Buffering....."
# Local variables...
center_services = in_file_2
buffer_shp = newpath + "buff" + str(i) + ".shp"
points = in_file_2
buffered_analysis_count_shp = newpath + "buffered_analysis_count.shp"
count_txt = newpath + "count.txt"
# Buffer size
b_size = 1000 + 1000 * i
b_size_input = str(b_size) + ' METERS'
print "Buffer:" + b_size_input + "\n"
# Process: Buffer...
gp.Buffer_analysis(center_services, buffer_shp, b_size_input, "FULL", "ROUND", "ALL", "")
print "over"
(Pour clarifier cette question, j'edited quelques pièces qui n'a pas de sens sans le reste du code L'erreur reste dans le programme..)
Message d'erreur:
ExecuteError: ERROR 000210: Cannot create output C:\LEED\Cities_20_Oct\services\results\buff1.shp Failed to execute (Buffer).
Que signifie «ça ne marchera pas»? –
Plutôt que de commenter, veuillez éditer votre question originale. –