2016-04-08 4 views
0

Ich habe zwei csv-Dateien, eine mit einer Liste von Pfaden für Quelldateien, die zweite, eine Liste von Pfaden für wo die Dateien zu kopieren. Beide Dateien haben die gleiche Anzahl von Elementen und jede Quelldatei wird nur einmal kopiert.Python: Kopieren und Einfügen von Dateien basierend auf Pfaden in zwei csvs

Wie würde ich laden die CSV-Dateien (Pandas? Numpy? Csv.reader?), Und wie würde ich alle Elemente auf die bestmögliche Weise kopieren? Ich kann Folgendes erreichen, wenn src und dest sich jeweils auf einen Pfad beziehen.

import pandas as pd 
srcdf = pd.read_csv('src.csv') 
destdf = pd.read_csv('dest.csv') 

from shutil import copyfile 
copyfile(src,dest) 

Es gibt keine Überschriften oder Spalten in meinen Dateien. Es ist nur ein Vektor von durch Kommas getrennten Werten. Die kommagetrennte Werte in meinem src CSV-Datei sind wie folgt aussehen:

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

In meiner dest CSV-Datei sind wie:

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

Vielleicht helfen Ihnen die Header Ihrer CSV-Datei? –

+0

Wie viele Spalten mit Namen in jeder Datei? – hpaulj

Antwort

0

Sie numpy genfromtxt verwenden können, wie folgt,

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

Angenommen, Ihre CSV-Datei ist nur eine Liste von Pfaden mit einem einzelnen Pfad in jeder Zeile. Sie können beispielsweise Folgendes tun:

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