Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Copy certain files from one folder to another using python

I am trying to copy only certain files from one folder to another. The filenames are in a attribute table of a shapefile.

I am successful upto writing the filenames into a .csv file and list the column containing the list of the filenames to be transferred. I am stuck after that on how to read those filenames to copy them to another folder. I have read about using Shutil.copy/move but not sure how to use it. Any help is appreciated. Below is my script:


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'])
like image 890
Adreeta Sarmah Avatar asked Apr 27 '15 01:04

Adreeta Sarmah


People also ask

How do I copy a file from multiple subfolders to one directory in Python?

move() method Recursively moves a file or directory (source) to another location (destination) and returns the destination. If the destination directory already exists then src is moved inside that directory.

How do I copy files from one folder to another in Jupyter?

Click the file you want to copy, create a duplicate of the file by choosing Duplicate key under File ( below the Jupyter logo at the top ). Choose the file copied(file_copy), and choose Move key under File. Choose the file path where you want to paste/move the copied file. Rename the copied file name as you wish.


1 Answers

Given the name of the file columns['label'] you can use the following to move a file

srcpath = os.path.join(src, columns['label'])
dstpath = os.path.join(dst, columns['label'])
shutil.copyfile(srcpath, dstpath)
like image 102
OYRM Avatar answered Nov 13 '22 11:11

OYRM