2016-04-08 15 views
0

İki adet csv dosyası var, biri kaynak dosyalarının yollarını içeren bir liste, ikincisi, dosyaların nereye kopyalanacağı yolların bir listesi. Her iki dosya aynı sayıda öğeye sahiptir ve her kaynak dosya yalnızca bir kez kopyalanır.Python: iki CSV'deki yollara göre dosyaları kopyalayıp yapıştırın

.csv dosyalarını (Pandas? Numpy? Csv.reader?) Nasıl yüklerim ve tüm öğeleri en iyi şekilde nasıl kopyalarım? src ve dest her birinin bir yola başvurması durumunda aşağıdakileri çalıştırabilirim. Dosyalarımda üstbilgi veya sütun bulunmamaktadır. Sadece virgülle ayrılmış değerlerin bir vektörü. Benim dest csv dosyasında

/Users/johndoe/Downloads/50.jpg, 
/Users/johndoe/Downloads/51.jpg, 

gibidir: my src csv dosyasında virgülle ayrılmış değerler göz gibidir aşağıdaki gibi numpy genfromtxt kullanabilirsiniz

/Users/johndoe/Downloads/newFolder/50.jpg,  
/Users/johndoe/Downloads/newFolder/51.jpg, 
+1

Belki de csv dosyanızın başlıklarını göstererek yardımcı olabilir? –

+0

Her dosyada kaç tane sütun isimleri var? – hpaulj

cevap

0

,

import numpy as np 
from shutil import copyfile 

srcdf = np.genfromtxt('./src.csv', dtype='S') 
destdf = np.genfromtxt('./dest.csv', dtype='S') 

assert len(srcdf) == len(destdf) 
for n in range(len(srcdf)): 
    copyfile(srcdf[n],destdf[n]) 
1

CSV'nizin her satırdaki tek bir yolu olan yolların bir listesi olduğunu varsayarak, aşağıdaki gibi bir şey yapabilirsiniz:

import csv 
from shutil import copyfile 

def load_paths(filename): 
    pathdict = {} 
    with open(filename) as csvfile: 
     filereader = csv.reader(csvfile, delimiter=' ') 
     a = 0 
     for row in filereader: 
      pathdict[a] = ''.join(row) 
      a += 1 
     csvfile.close() 
     return pathdict 

srcpaths = load_paths('srcfile.csv') 
dstpaths = load_paths('dstfile.csv') 

for a in range(len(srcpaths)): 
    copyfile(srcpaths[a],dstpaths[a])