Seite 1 von 1
Eine Liste mit nur einem Dateitypen.
Verfasst: Sonntag 22. April 2007, 18:31
von Tayce
Hallo erstmal.
Ich probiere mich zur Zeit ein wenig mit Python und wollte gerade versuchen ein kleines Skript zu schreiben das mir alle meine *.jpg und *.JPG s in die richtige größe umwandelt.
Im Moment bin ich schon soweit:
Code: Alles auswählen
#/usr/bin/env python
#-*- encoding: utf-8 -*-
import os
dir = os.getcwd()
files = os.listdir(dir)
Nun ist es mein Problem wie ich es schaffe diese Liste so zu verändern das nur .jpg und .JPG's drinn sind.
Könnt ihr mir helfen?
Verfasst: Sonntag 22. April 2007, 18:37
von BlackJack
Man kann entweder das `glob`-Modul benutzen oder die Liste von `listdir()` filtern. Die Zeichenketten-Methoden `lower()` oder `upper()` und `endswith()` sind da sehr nützlich.
Verfasst: Sonntag 22. April 2007, 20:40
von Tayce
Das mit dem endswith wäre ja klasse.
Aber bei dem versuch mit
files.endswith("*.jpg")
sagt er mir immer:
AttributeError: 'list' object has no attribute 'endswith'
Weiß jemand die Lösung?
Verfasst: Sonntag 22. April 2007, 21:01
von BlackJack
Ja, die Methode gibt's nicht auf Listen sondern Zeichenketten, also auf jedem Element *in* der Liste die `os.listdir()` liefert.
Verfasst: Montag 23. April 2007, 14:52
von Tayce
Okay ich habs geschafft:
Code: Alles auswählen
#/usr/bin/env python
#-*- encoding: utf-8 -*-
import os
from PIL import Image
jpg = [f for f in os.listdir(".") if f.lower().endswith(".jpg")]
print "Alle jpg's: ", jpg
def skalieren():
for i in jpg:
print "bearbeite", i
im = Image.open(i)
im_resized = im.resize((1280, 1024))
im_resized.save(i)
print i, "bearbeitet"
skalieren()
Vielen dank für deine Hilfe..
Falls jemand das kleine Skript gebrauchen kann... Nur zu
Verfasst: Montag 23. April 2007, 17:16
von birkenfeld
Wenn du ``f.lower().endswith(".jpg")`` schreibst, wird auch ".JPG" und ".Jpg" etc. akzeptiert.
Verfasst: Montag 23. April 2007, 18:23
von Tayce
cool danke...
Das war noch was was mich gestört hatte
Verfasst: Montag 23. April 2007, 19:49
von Zap
Zwei kleine Anmerkungen hätte ich an der Stelle noch.
1. Du überschreibst an dieser Stelle eine built-in funktion.
Nicht weiter wild da man diese in Skripten so gut wie nie verwendet.
Man sollte sich aber von vornherein angewöhnen auf sowas zu achten.
Code: Alles auswählen
jpg = [f for f in os.listdir(".") if f.lower().endswith(".jpg")]
2. Du machst von dem "current work directory" das du dir holst keinen Gebrauch sondern verwendest "." .
Somit kannst du 'dir = os.getcwd()' auch weg lassen.
Verfasst: Montag 23. April 2007, 20:14
von Tayce
Achso ja...
Das war noch von meinem ersten Versuch übrig geblieben.
Ich werds rauslöschen.
Danke