2016-07-28 66 views
0

我沒有得到期望的預期輸出。我必須將「itemnumber」列與「imagename」列連接並保存到該csv中的另一列「image」中。例如B001_B001。它還會在圖像文件夾中創建一個重複圖像「B001_B001.jpg」。concat兩列並存儲在csv中的新列中

我輸入的是:

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 

和我的預期成果是:

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 

這是我到目前爲止有:

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

什麼是你的代碼的問題嗎? – haifzhan

+0

我沒有得到像圖像中預期的輸出。 :( – sachit

+0

你得到了什麼,你可以過去它到你的問題? – haifzhan

回答

0

如果你可以用熊貓:

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 

要進行新的圖像副本:

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

非常感謝@Alexander ....它也應該在圖像文件夾中創建一個複製圖像B001_B001,B002_B002和B003_B003 ...有B001,B002 ,文件夾中的B003圖像 – sachit

相關問題