2016-04-08 44 views
0

我有兩個csv文件,一個包含源文件路徑列表,第二個包含將文件複製到的路徑列表。兩個文件都具有相同數量的元素,每個源文件僅複製一次。Python:根據兩個csvs中的路徑複製和粘貼文件

如何加載.csv文件(Pandas?Numpy?csv.reader?),以及如何以最佳方式複製所有項目?我能夠得到以下工作,如果srcdest每個指向一個路徑。

​​

我的文件中沒有標題或列。它只是一個逗號分隔值的向量。在我src CSV文件中的逗號分隔值是什麼樣子:

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

在我dest csv文件是這樣的:

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

也許顯示您的csv文件的標題可以幫助嗎? –

+0

每個文件中有多少列名稱? – hpaulj

回答

0

您可以使用numpy的genfromtxt如下,

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只是每行有一條路徑的路徑列表,您可以這樣做:

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])