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.
Python & Wildcards
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.