我的任务是使用list-loop执行多个缓冲区!
import arcpy
arcpy.env.overwriteOutput = 1
arcpy.env.workspace="C:\\salzburg.gdb"
sbgRivers="sbg_rivers"
buff_name=raw_input("Please insert a file name:")
for buffer_size in [100,200,300,450]:
outfile="C:\\salzburg.gdb\\buffer_output"
arcpy.Buffer_analysis(sbgRivers,buff_name+str(buffer_size),buffer_size)
print "Buffer complete"
所以下一步是:如果文件名已经存在(raw_input),则要求用户输入一个新的数据集名称,直到找到一个名称,该名称尚不存在!
我想过一个while循环,但我不确定如何将它集成到上面的代码中
我最终得到了这个
import arcpy
arcpy.env.overwriteOutput = 1
arcpy.env.workspace="C:\\salzburg.gdb"
sbgRivers="sbg_rivers"
buff_name=raw_input("Please insert a new data set name:")
while arcpy.Exists(buff_name):
buff_name=raw_input("Please enter a new data set name")
for buffer_size in [100,200,300,450]:
arcpy.Buffer_analysis(sbgRivers,buff_name+str(buffer_size),buffer_size)
print "Buffer complete"
你怎么看?欢迎任何帮助和赞赏!
答案 0 :(得分:0)
确定如果要使用input()在while循环中,代码将如下所示:
sett=True
while sett:
buff_name=raw_input("Please insert a file name:")
if buff_name=="":
continue
else:
break ##Or: sett=False
答案 1 :(得分:0)
您首先要确保拥有正确的文件名,然后继续执行下一步。代码应该是:(假设arcpy.Exists(buff_name)
执行它应该执行的操作,因为我认为它应该是arcpy.Exists(buff_name+str(100))
或类似的东西。)
import arcpy
arcpy.env.overwriteOutput = 1
arcpy.env.workspace="C:\\salzburg.gdb"
sbgRivers="sbg_rivers"
buff_name=raw_input("Please insert a new data set name:")
while arcpy.Exists(buff_name):
buff_name=raw_input("Name already exists. Please enter a new data set name")
for buffer_size in [100,200,300,450]:
arcpy.Buffer_analysis(sbgRivers,buff_name+str(buffer_size),buffer_size)
print "Buffer complete"
您之前的代码将为所有提供的输入(即使是错误的输入)运行for循环。