我希望用户处理2个不同文件夹中的文件。用户选择 First_Directory 的文件夹和 Second_Directory 的另一个文件夹。如果每次只选择一个目录,则定义每个都有自己的算法并且工作正常。如果用户同时选择两者,则仅处理 First_Directory 。
两者都包含glob模块,如简化代码所示,我认为问题所在。我的问题是:可以多次使用glob模块,如果没有,是否有替代方案?
##Test=name
##First_Directory=folder
##Second_Directory=folder
path_1 = First_Directory
path_2 = Second_Directory
path = path_1 or path_2
os.chdir(path)
def First(path_1):
output_1 = glob.glob('./*.shp')
#Do some processing
def Second(path_2):
output_2 = glob.glob('./*.shp')
#Do some other processing
if path_1 and path_2:
First(path_1)
Second(path_2)
elif path_1:
First(path_1)
elif path_2:
Second(path_2)
else:
pass
答案 0 :(得分:2)
您可以将功能修改为仅在感兴趣的路径中查找.shp
个文件。然后,您可以将该功能用于一个路径或两个路径。
def globFolder(path):
output_1 = glob.glob(path + '\*.shp')
path1 = "C:\folder\data1"
path2 = "C:\folder\data2"
然后你可以使用那个通用函数:
totalResults = globFolder(path1) + globFolder(path2)
这将结合两个列表。
答案 1 :(得分:1)
我认为通过restructring你的代码可以获得你的目标:
def First(path,check):
if check:
output = glob.glob(path+'./*.shp')
#Do some processing
else:
output = glob.glob(path+'./*.shp')
#Do some other processing
return output
#
#
#
First(path_1,True)
First(path_2,False)