进行一个循环,以从两个文件夹中使用相同的名称对吗?

时间:2018-08-10 10:48:47

标签: python arcpy

一个主文件夹,其中一个文件夹名为old,另一个名为new

旧的有一些文件夹。新的文件夹中有几个名称相同,仅此而已。

我想先删除old中不存在的new文件夹,然后:进行一个循环,将每个文件-同名-pair放入其中。 以下行:

arcpy.Append_management(["shpfromonefolder.shp", "shpfromsecondfolder.shp"],"NO_TEST")

例如:一个文件夹中的land.shp以及另一文件夹中的land.shp,因此它将为:

arcpy.Append_management(["land.shp", "land.shp"],"NO_TEST")

1 个答案:

答案 0 :(得分:1)

如果存在old_path中的文件夹,new_path中的文件夹将被删除:

import os
import shutil

old_path = r"old file path"
new_path = r"old file path"

for folder in os.listdir(old_path):
    if folder not in os.listdir(new_path):
        shutil.rmtree(os.path.join(old_path, folder))

这将找到匹配的形状文件并将它们传递给arcpy.Append_management()

import os
import arcpy

for dir_path, dir_names, file_names in arcpy.da.Walk(workspace=new_path, datatype="FeatureClass"):
    for filename in file_names:
        new_file_path = os.path.join(dir_path, filename)
        folder = os.path.basename(os.path.dirname(new_file_path))
        old_file_path = os.path.join(old_path, folder, filename)

        if os.path.exists(old_file_path):
            arcpy.Append_management(inputs=[new_file_path], target=old_file_path, schema_type="NO_TEST")