如何在while循环中使用raw_input()?

时间:2014-04-21 11:10:15

标签: python python-2.7 arcpy

我的任务是使用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"
你怎么看?欢迎任何帮助和赞赏!

2 个答案:

答案 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循环。