2016-07-29 9 views
-1

mein Programm abstürzt, wenn dieses bestimmte Bild nicht im Image-Ordner gefunden wird. Das Programm sucht nach Bild im Image-Ordner und Imagecolumn in der csv.Wenn der Bildname in der Bildspalte vorhanden ist, aber nicht im Ordner gefunden wird, stürzt er ab. Ich habe versucht, die Imagedatei zu protokollieren, aber es ist fehlgeschlagen.Programm stürzt ab, wenn Bild nicht im Ordner gefunden wird, aber es sollte in Log-Logging-Problem

Dies ist, ich habe bisher

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


class Image: 

    def image_fix(self): 

     # logging 
     LOG = "example.log" 
     logging.basicConfig(filename='example.log', 
          filemode='w', 
          format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s', 
          datefmt='%H:%M:%S', 
          level=logging.DEBUG) 


     # console handler 
     console = logging.StreamHandler() 
     console.setLevel(logging.ERROR) 
     logging.getLogger("").addHandler(console) 


     # using panda to open and read csv 
     df = pd.read_csv('rgw.csv') 
     df['Image'] = df.ImageName + "_" + df.ImageWChain + ".jpg" 

     #checking if column "ImageWChain" has "jpg" extension,then concat .jpg 
     if ".jpg" not in df.ImageWChain: 
      df['ImageWChain'] = df.ImageWChain + ".jpg" 

     if ".jpg" not in df.ImageName: 
      df['ImageName'] = df.ImageName + ".jpg" 

     # write to csv 
     df.to_csv('rgw.csv') 
     old_image = df.ImageName 
     new_image = df.Image 

     #splits the imagename and extension 
     for item in enumerate(old_image): 
      name, ext = splitext(old_image[item[0]]) 
      if (ext == ""): 
       continue 
      oldFileName = name + ext 
      print("oldFileName = " + oldFileName) 
      newFileName = new_image 
      print("newFileName = " + newFileName) 

      #checks whether image file exits in folder or not 
      if (os.path.isfile(oldFileName)): 

       #creates duplicate copy of an image 
       for old_image, new_image in zip(df.ImageName,df.Image): 
        shutil.copy2(old_image,new_image) 

      else: 
       # if image not found in folder,then stores in log 


       logging.info(oldFileName) 

       # write into log 
       logger = logging.getLogger(oldFileName) 
       logger.debug(" <- This image was not found in the folder") 


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

Die Zurückverfolgungs ist

C:\Python27\python.exe D:/New/a.py Traceback (most recent call last): 
File "D:/New/a.py", line 23, in <module> shutil.copy2(old_image,new_image) 
File "C:\Python27\lib\shutil.py", line 130, in copy2 copyfile(src, dst) 
File "C:\Python27\lib\shutil.py", line 82, in copyfile with open(src, 'rb') as fsrc: 
IOError: [Errno 2] No such file or directory: 'R0056SS.jpg' 
+1

Was meinst du mit Absturz? Erhalten Sie eine Fehlermeldung? Wenn ja, bitte teilen Sie es. – Julien

+0

C: \ Python27 \ python.exe D: /New/a.py Traceback (letzter Anruf zuletzt): Datei "D: /New/a.py", Zeile 23, in shutil.copy2 (old_image , new_image) Datei "C: \ Python27 \ lib \ shutil.py", Zeile 130, in copy2 copyfile (src, dst) Datei "C: \ Python27 \ lib \ shutil.py", Zeile 82, in copyfile mit open (src, 'rb') als fsrc: IOError: [Errno 2] Keine solche Datei oder Verzeichnis: 'R0056SS.jpg' – sqllover999

+1

Wie ist dieses Problem mit der Protokollierung verbunden? Erwarten Sie, dass der Logger Ausnahmen automatisch abfängt und protokolliert ??? –

Antwort

1

hier:

 #checks whether image file exits in folder or not 
     if (os.path.isfile(oldFileName)): 

Sie testen die Existenz von oldFileName, aber dann versucht old_image zu kopieren :

  #creates duplicate copy of an image 
      for old_image, new_image in zip(df.ImageName,df.Image): 
       shutil.copy2(old_image,new_image) 
+0

Ich versuche zu überprüfen, ob das Bild in den Ordner und CSV-Spalte existiert, wenn nicht in Protokoll schreiben – sqllover999