2016-07-28 7 views
0

Ich bekomme nicht die gewünschte erwartete Ausgabe.Ich muss "itemnumber" Spalte mit "Bildname" Spalte und speichern Sie in eine andere Spalte "Bild" in diesem CSV. ZB B001_B001. Es erstellt auch ein Duplikat Bild "B001_B001.jpg" im Bildordner.concat zwei Spalten und speichern in einer neuen Spalte in einem csv

Meine Eingabe ist:

ItemNumber UPC Keyword ImageName ImageWChain Description  
0  B001 123  XYZ  B001  B001  Test1 
1  B002 456  GDH  B002  B002  Test2 
2  B003 789  GFR  B003  B003  Test3 

und meine erwartete Ausgabe ist:

ItemNumber UPC Keyword ImageName ImageWChain Description  Image 
0  B001 123  XYZ  B001  B001  Test1 B001_B001 
1  B002 456  GDH  B002  B002  Test2 B002_B002 
2  B003 789  GFR  B003  B003  Test3 B003_B003 

Dies ist, was ich bisher:

import csv 
import os 
from os.path import splitext  # splits name & extension from a file 
import shutil      # making a duplicate copy of a file 
import logging 

class Image: 
    def image_fix(self): 

     #open and read csv 
     with open('rosary.csv') as csvfile: 

     #create list for sku, old_imagename_column_1, old_imagename_column_1 
     #and renamed new_imagename 
       keyList = []      #for ItemNumber 
       itemList = []      #for ImageName 
       itemList1 = []     #for ImageWChain 
       renamedList = []     #for Renamed NEW_ImageName 

       spamreader = csv.reader(csvfile, delimiter=",") 

     #storing all the columns into list 
       for row in spamreader: 
        keyList.append(row[0]) 
        itemList.append(row[3]) 
        itemList1.append(row[4]) 

        renamedList.append(row[6]) 

     # processing for ImageName 
     for item in enumerate(itemList): 
      oldFileName = name 
      newFileName = '{}_{}{}'.format(name, keyList[item[0]]) 


      # check if the image file existsin image folder for ImageName column 

      if (os.path.isfile(oldFileName)): 

        shutil.copy2(oldFileName, newFileName)  #make a duplicate image of every itemname 
        renamedList[item[0]] = '{}_{}{}'.format(oldFileName, keyList[item[0]]) 


      # write the final output in new csv 
      with open('rosary.csv','wb') as my_csv: 
       csvWriter = csv.writer(my_csv,delimiter=',') 
       for row in zip(keyList, itemList, itemList1, renamedList): 
        # printing row in order 
        print(row[0] + '\t' + '\t' + row[3] + '\t' + '\t' + 
          row[4] + '\t' + '\t' + row[6]) 
        csvWriter.writerow(row) 

if __name__=="__main__": 
    obj = Image() 
    obj.image_fix() 
+0

was Problem Ihres Codes ist? – haifzhan

+0

Ich erhalte keine erwartete Ausgabe wie im Bild. :( – sachit

+0

was hast du bekommen, können Sie es in Ihre Frage? – haifzhan

Antwort

0

Wenn Sie Pandas verwenden können:

import pandas as pd 

df = pd.read_csv('rosary.csv') 
df['Image'] = df.ImageName + "_" + df.ImageWChain 
df.to_csv('rosary.csv') 

>>> df 
     Unnamed: 0 Description ImageName ImageWChain ItemNumber Keyword UPC  Image 
0   0  Test1  B001  B001  B001  XYZ 123 B001_B001 
1   1  Test2  B002  B002  B002  GDH 456 B002_B002 
2   2  Test3  B003  B003  B003  GFR 789 B003_B003 

Um ein neues Bild Kopie:

for old_image, new_image in zip(df.ImageName, df.Image): 
    if (os.path.isfile(old_image)): 
     shutil.copy2(old_image, new_image) 
+0

Dank viel @Alexander .... es sollte auch ein Duplikat Bild B001_B001, B002_B002 und B003_B003 in den Bildordner erstellen ... Es gibt B001, B002 , B003 Bild im Ordner – sachit

Verwandte Themen