制作一个循环,从两个文件夹中获取相同的名称对?
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")
一个主文件夹,其中有一个名为 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")