Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将原始输入()与while循环一起使用?_Python_Python 2.7_Arcpy - Fatal编程技术网

Python 如何将原始输入()与while循环一起使用?

Python 如何将原始输入()与while循环一起使用?,python,python-2.7,arcpy,Python,Python 2.7,Arcpy,我的任务是使用列表循环执行多个缓冲区 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

我的任务是使用列表循环执行多个缓冲区

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"
因此,下一步是:如果文件名已经存在(原始输入),则要求用户输入一个新的数据集名称,直到找到一个尚未存在的名称

我考虑了一个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"

你觉得怎么样?欢迎并感谢您的帮助

确定如果要在while循环中使用input(),代码如下:

sett=True
while sett:
    buff_name=raw_input("Please insert a file name:")  
    if buff_name=="":
        continue 
    else: 
        break ##Or: sett=False

您需要首先确保文件名正确,然后继续下一步。代码应该是:(假设
arcpy.Exists(buff\u name)
做了它应该做的事情,因为我认为它应该是
arcpy.Exists(buff\u name+str(100))
或者类似的东西。)


您以前的代码可能会对提供的所有输入(甚至是错误的输入)运行for循环。

如果它可以工作并且(相对)简洁,我想这是可以的。否则,你应该在CodeReview上查看它我看不出有什么问题!但以后要确保缩进是用格式表示的。我还建议它真的应该在代码检查中,看起来
for
循环应该放在
循环之外。
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"