如何在while循环中使用raw_input()?
我的任务是用列表循环来执行多个缓冲区!
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"
接下来的步骤是:如果文件名已经存在(通过用户输入),就要让用户一直输入新的数据集名称,直到找到一个还不存在的名称为止!
我考虑过用一个循环,但不太确定怎么把它放到上面的代码里。
最后我得到了这个结果。
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"
你觉得怎么样?任何帮助都非常欢迎和感激!
2 个回答
0
好的,如果你想在一个循环中使用input(),代码会像这样:
sett=True
while sett:
buff_name=raw_input("Please insert a file name:")
if buff_name=="":
continue
else:
break ##Or: sett=False
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"
你之前的代码会对所有提供的输入(即使是错误的)都执行这个循环。