制作一个循环,从两个文件夹中获取相同的名称对?

Make a loop that will take the same name pairs from two folders?

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

的文件夹

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

我想先删除 new 中不存在的 old 的文件夹,然后:制作一个循环,将每个文件 - 同名 - 对,并将其放入在里面 以下行:

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

例如:来自一个文件夹的 land.shp 和来自另一个文件夹的 land.shp 因此它将是:

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

这将删除 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")