@jonas: Warum diese Asymmetrie? `find()` statt `startswith()`?
@Frau_U: Ich glaube immer noch die Ordnernamen kommen von woanders aber nicht von dem Quelltext mit dem `glob()`. Das kann einfach nicht sein.
Python & Wildcards
@Blackjack:
Habs wohl einfach übersehen
Ich verstehte allerdings noch nicht so 100%, was der Threadersteller haben möchte?
Lg, Jonas
Habs wohl einfach übersehen
Code: Alles auswählen
def starts_ends_with(string, starts, ends):
if string.startswith(starts) and string.endswith(ends):
return True
Lg, Jonas
Bitte so:jonas hat geschrieben:@Blackjack:
Habs wohl einfach übersehenCode: Alles auswählen
def starts_ends_with(string, starts, ends): if string.startswith(starts) and string.endswith(ends): return True
Code: Alles auswählen
def starts_ends_with(string, starts, ends):
return (string.startswith(starts) and string.endswith(ends))
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher
http://ms4py.org/
Gerhard Kocher
http://ms4py.org/
@ms4py: "Völlig" ist vielleicht übertrieben. Man kann sich mit `partial()` eine Funktion daraus basteln, die man zum `filter()`\n verwenden kann.
Hey Ihr alle!
ich habe es doch noch hinbekommen
Danke für eure hilfreichen Antworten.
Problem ist nur. Ich arbeite mit der Eclipse und nem Python Plugin. Da funktioniert es so wie ich es will.
Aber in der IDLE oder der CMD Dunktioniert mein os.path.walk nicht mehr
Hier mal die Fehlermeldung in der CMD.
Weiß leider nicht wieso er das nicht kennt
PngOpt Objekt wird angelegt und manuelles cv Verzeichnis mitgegeben
Objekt pngConvertObjekt wird angelegt
Objekt statistikObjekt wird angelegt
__init__ statistik
erfolgreich Parameter geprueft
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Frau_U\Desktop\Java_work_new\PngOptimizer\src\OhneKommenatre_PNG_Optimizer.py", line 164, in <module>
pngOpti = PngOpt("C:\\Dokumente und Einstellungen\\Frau_U\\Desktop\\Java_work_new\\PngOptimizer\\src\\bilder\\")
File "C:\Dokumente und Einstellungen\Frau_U\Desktop\Java_work_new\PngOptimizer\src\OhneKommenatre_PNG_Optimizer.py", line 27, in __init__
self.pruefeParameter()
File "C:\Dokumente und Einstellungen\Frau_U\Desktop\Java_work_new\PngOptimizer\src\OhneKommenatre_PNG_Optimizer.py", line 35, in pruefeParameter
self.pngConvertObjekt.pngOut()
File "C:\Dokumente und Einstellungen\Frau_U\Desktop\Java_work_new\PngOptimizer\src\OhneKommenatre_PNG_Optimizer.py", line 87, in pngOut
os.path.walk(self.verzeichnis, leseVerzeichnisAus , "Test")
AttributeError: 'module' object has no attribute 'walk'
ich habe es doch noch hinbekommen
Danke für eure hilfreichen Antworten.
Problem ist nur. Ich arbeite mit der Eclipse und nem Python Plugin. Da funktioniert es so wie ich es will.
Aber in der IDLE oder der CMD Dunktioniert mein os.path.walk nicht mehr
Hier mal die Fehlermeldung in der CMD.
Weiß leider nicht wieso er das nicht kennt
PngOpt Objekt wird angelegt und manuelles cv Verzeichnis mitgegeben
Objekt pngConvertObjekt wird angelegt
Objekt statistikObjekt wird angelegt
__init__ statistik
erfolgreich Parameter geprueft
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Frau_U\Desktop\Java_work_new\PngOptimizer\src\OhneKommenatre_PNG_Optimizer.py", line 164, in <module>
pngOpti = PngOpt("C:\\Dokumente und Einstellungen\\Frau_U\\Desktop\\Java_work_new\\PngOptimizer\\src\\bilder\\")
File "C:\Dokumente und Einstellungen\Frau_U\Desktop\Java_work_new\PngOptimizer\src\OhneKommenatre_PNG_Optimizer.py", line 27, in __init__
self.pruefeParameter()
File "C:\Dokumente und Einstellungen\Frau_U\Desktop\Java_work_new\PngOptimizer\src\OhneKommenatre_PNG_Optimizer.py", line 35, in pruefeParameter
self.pngConvertObjekt.pngOut()
File "C:\Dokumente und Einstellungen\Frau_U\Desktop\Java_work_new\PngOptimizer\src\OhneKommenatre_PNG_Optimizer.py", line 87, in pngOut
os.path.walk(self.verzeichnis, leseVerzeichnisAus , "Test")
AttributeError: 'module' object has no attribute 'walk'
Was wird denn für `os.path.__file__` ausgegeben? Und welche Python-Version wird benutzt?
Ausserdem sieht mir das extrem nach "Java" aus mit den Klassen. Wahrscheinlich sind die fast alle überflüssig und Funktionen würden ausreichen.
Ausserdem sieht mir das extrem nach "Java" aus mit den Klassen. Wahrscheinlich sind die fast alle überflüssig und Funktionen würden ausreichen.
so wurde jetzt anders gelöst. kA warum das walk nich funktioniert hat...
Er soll für jede Datei die er in den Unterordnern findet einen eigenen pngout befehl in die console schreiben.
funktioniert an sich auch. nur bricht er nachdem er das erste bild konvertiert hat ab und beendet das ganze.sollte aber dann den nächsten pngoutbefehl schreiben für die nächste datei die er findet.
kann mir jemand helfen?
Code: Alles auswählen
def inhaltVerzeichnis(self, pfad):
for f in os.listdir(pfad):
name = os.path.join(pfad, f)
# print(name)
if os.path.isdir(name):
self.inhaltVerzeichnis(name)
elif os.path.isfile(name) and f.endswith(".png"):
print("PNG-Datei gefunden: " + name)
self.schreibePngOutBefehl(name)
# Diese Methode ist fuer den PngOut Befehl in der CMD zustaendig
# Mit dem Befehl der zB so heissen kann "pngout Bild1.png Bild2.png" wird Bild1.png konvertiert und als Bild2.png gespeichert
def schreibePngOutBefehl(self, dateiname):
try:
self.dateiname = dateiname
print("\n=============================\nFunktion pngout Befehl geschrieben")
pngbefehl = str("pngout " + "\"" + self.dateiname + "\" ")
os.execl("pngout.exe", pngbefehl)
except:
self.schreibeFehlerInStatistik(Exception)
print("fehler bei pngout")
funktioniert an sich auch. nur bricht er nachdem er das erste bild konvertiert hat ab und beendet das ganze.sollte aber dann den nächsten pngoutbefehl schreiben für die nächste datei die er findet.
kann mir jemand helfen?
@Frau_U: Die `os.exec*()`-Funktionen ersetzen den aktuellen Prozess mit dem neu gestarteten. An der Stelle wird das Programm das `exec*()` aufruft also beendet.
Und externe Prozesse zu starten gibt es das `subprocess`-Modul.
Und ich möchte noch einmal anmerken, dass mir die Klasse überflüssig erscheint.
Warum wird in `schreibePngOutBefehl()` der Dateiname an das Objekt gebunden!?
Ausserdem machen beide Methoden nicht das was der Name suggeriert.
Und externe Prozesse zu starten gibt es das `subprocess`-Modul.
Und ich möchte noch einmal anmerken, dass mir die Klasse überflüssig erscheint.
Warum wird in `schreibePngOutBefehl()` der Dateiname an das Objekt gebunden!?
Ausserdem machen beide Methoden nicht das was der Name suggeriert.