Копирование определенных файлов из одной папки в другую с помощью python

Я пытаюсь скопировать только определенные файлы из одной папки в другую. Имена файлов находятся в таблице атрибутов шейп-файла.

Я успешно до написания имен файлов в a .csv-файл и список столбцов, содержащих список имен файлов для передачи. После этого я застрял в том, как прочитать эти имена файлов, чтобы скопировать их в другую папку. Я читал об использовании Shutil.копировать / перемещать, но не уверен, как его использовать. Любая помощь приветствуется. Ниже мой сценарий:


import arcpy
import csv
import os
import sys
import os.path
import shutil
from collections import defaultdict
fc = 'C:work_DataExport_Output.shp'
CSVFile = 'C:wokk_DataExport_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'])

3 ответов


имя файла columns['label'] для перемещения файла

srcpath = os.path.join(src, columns['label'])
dstpath = os.path.join(dst, columns['label'])
shutil.copyfile(srcpath, dstpath)

вот скрипт, который я использовал для решения моей проблемы:

import os
import arcpy
import os.path
import shutil
featureclass = "C:\work_Data\Export_Output.shp"
src = "C:\Data\UC_Training_Areas"
dst = "C:\Data\Script"

rows = arcpy.SearchCursor(featureclass)
row = rows.next()
while row:
     print row.Label
     shutil.move(os.path.join(src,str(row.Label)),dst)
     row = rows.next()

подумайте об этом таким образом, как источник и назначение предполагая, что вы хотите скопировать файл из папки изображений в папку изображений, расположенную где-то в месте назначения компьютера
X-имя вашей машины Z-имя файла"

import os;
import shutil;
import glob;

source="C:/Users/X/Pictures/test/Z.jpg"
dest="C:/Users/Public/Image"

    if os.path.exists(dest):
    print("this folder exit in this dir")
else:
    dir = os.mkdir(dest)

for file in glob._iglob(os.path.join(source),""):
    shutil.copy(file,dest)
    print("done")