Python & Wildcards

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackJack

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.
Benutzeravatar
Frau_U
User
Beiträge: 16
Registriert: Dienstag 13. April 2010, 18:15

so wurde jetzt anders gelöst. kA warum das walk nich funktioniert hat...

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")
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?
BlackJack

@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.
Benutzeravatar
Frau_U
User
Beiträge: 16
Registriert: Dienstag 13. April 2010, 18:15

Super es funktioniert :-) Vielen dank!!!! Muss jetzt nur noch die Methoden schreiben, die die Statistik erstellen!
DANKE!!
Benutzeravatar
Frau_U
User
Beiträge: 16
Registriert: Dienstag 13. April 2010, 18:15

So nochmal vielen vielen Dank an alle! Mein Programm ist fertig :-) Verzeichnis wird durchlaufen, Statistik steht! Alles Super!

Vielen Dank euch allen!!!!! :) :) :)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich würds ja gerne mal sehen... ;-)

(-> paste.pocoo.org)
Antworten