2017-06-30 2 views
1

einige Codes Schrieb über einen Ordner von 200 Bildern gehen, um den Wert der minimalen Anzahl der Pixel in einem Bild (dh min Breite und Höhe)Python Open Directory Fehler

Aber ich erhalte diesen Fehler zu erhalten:

File "pixelSizeCheck.py", line 9, in get_num_pixels 
width, height = Image.open(open(filepath)).size 
IsADirectoryError: [Errno 21] Is a directory: 

, wenn ich diesen Code ausführen:

from PIL import Image 
import os.path 

def get_num_pixels(filepath): 
    heightMin= 10000 
    widthMin= 10000 
    for filename in os.listdir(filepath): 
     if filename.endswith(".jpg") : 
      width, height = Image.open(open(filepath)).size 
      if width< widthMin: 
       widthMin = width 
       return widthMin 

      if height < heightMin: 
       heightMin = height 
       return heightMin 

print (heightMin, widthMin) 

get_num_pixels("filepath") 

aber ich den Code mit print-Anweisung getestet haben, und ich weiß, dass das Verzeichnis i Putting wurden korrekt ist, weil es erreicht die for-Schleife richtig, aber dann stürzt ab, wenn ich versuche, und gewann Linie 9:

Image.open(open(filepath)).size 

auch ich ist relativ neu in Python so ein Rat, wie man den Code verbessern würde sehr geschätzt werden. Entschuldigung im Voraus, wenn einer der Codes schlampig oder schlecht ist.

Antwort

1

Sie versuchen, das Verzeichnis öffnen Sie scannen: In Image.open Anruf:

open(filepath) 

sollte (der zweite Fehler ist, dass Sie im Binär-Modus zu öffnen haben)

open(os.path.join(filepath,filename),"rb") 

ein besserer Weg wäre glob.glob zu verwenden zu filtern und zugleich absoluten Pfad zu erhalten:

for filename in os.listdir(filepath): 
    if filename.endswith(".jpg") : 
     width, height = Image.open(open(os.path.join(filepath,filename),"rb")).size 

würde (mit aufgenommen, einem Kontext-Manager der Datei geschlossen, um sicherzustellen, ist):

for filename in glob.glob(os.path.join(filepath,"*.jpg")): 
    with open(filename,"rb") as f: 
     width, height = Image.open(f).size 
+0

wenn i glob verwende ich halte diesen seltsamen Fehler File "pixelSizeCheck.py", Zeile 10, immer in get_num_pixels Breite, Höhe = Image.open (f) .Größe Datei "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/Image.py", Zeile 2419, in Öffnen prefix = fp.read (16) Datei "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/codecs.py", Zeile 321, in dekodieren (Ergebnis, verbraucht) = selbst ._buffer_decode (data, self.errors, final) UnicodeDecod eError: 'utf-8' Codec kann Byte 0xff in Position 0 nicht dekodieren: ungültiges Startbyte –

+0

Es gab ein weiteres Problem: Sie müssen die Datei als Binärdatei öffnen. –

+0

Wie öffne ich die Datei im Binärformat? Entschuldigung neu für Python –

Verwandte Themen