【发布时间】:2015-04-27 01:13:58
【问题描述】:
我正在尝试仅将某些文件从一个文件夹复制到另一个文件夹。文件名位于 shapefile 的属性表中。
我成功地将文件名写入 .csv 文件并列出包含要传输的文件名列表的列。在那之后我被困在如何读取这些文件名以将它们复制到另一个文件夹中。我已阅读有关使用 Shutil.copy/move 但不确定如何使用它的信息。任何帮助表示赞赏。以下是我的脚本:
import arcpy
import csv
import os
import sys
import os.path
import shutil
from collections import defaultdict
fc = 'C:\\work_Data\\Export_Output.shp'
CSVFile = 'C:\\wokk_Data\\Export_Output.csv'
src = 'C:\\UC_Training_Areas'
dst = 'C:\\MOSAIC_Files'
fields = [f.name for f in arcpy.ListFields(fc)]
if f.type <> 'Geometry':
for i,f in enumerate(fields):
if f in (['FID', "Area", 'Category', 'SHAPE_Area']):
fields.remove (f)
with open(CSVFile, 'w') as f:
f.write(','.join(fields)+'\n')
with arcpy.da.SearchCursor(fc, fields) as cursor:
for row in cursor:
f.write(','.join([str(r) for r in row])+'\n')
f.close()
columns = defaultdict(list)
with open(CSVFile) as f:
reader = csv.DictReader(f)
for row in reader:
for (k,v) in row.items():
columns[k].append(v)
print(columns['label'])
【问题讨论】:
-
您可能想要编辑您的代码,以便它可以通过复制/粘贴运行。缩进等...现在已关闭。此外,当您使用
with(open(filename, 'w') as f:....成语时,您不需要使用f.close()。当您退出with块时,文件将自动关闭。最后,一个问题...在此示例中是最后一行打印的文本print(columns['label'])您要复制到目标的文件的名称目录 ?否则,我很好奇