Python Programm startet nicht

einfachpeer

Lt. Commander
Registriert
Apr. 2022
Beiträge
1.321
Hallo. Habe einen python Quellcode der folgendes machen soll :

  • Jede png Datei verkleinern, also die Dateigröße, sodass sie auf meiner Website schneller lade
  • Die Dateien liegen auf dem Ordner Desktop/Bilder_verkleinern
  • Die Originaldateien sollen überschrieben werden, die in dem Ordner liegen.
Code:
from PIL import Image
import os

# Pfad zum Ordner, in dem die Bilder liegen
eingabeordner = os.path.expanduser("~/Desktop/Bilder_verkleinern")

# Prozentsatz der Verkleinerung
verkleinerungsprozent = 50  # Hier auf die gewünschte Größe ändern

def verkleinere_alle_pngs(ordner, prozent):
    try:
        # Liste aller Dateien im Ordner
        dateien = os.listdir(ordner)

        for datei in dateien:
            if datei.lower().endswith(".png"):
                dateipfad = os.path.join(ordner, datei)

                # Bild öffnen
                bild = Image.open(dateipfad)

                # Größe anpassen
                breite, höhe = bild.size
                neue_breite = int(breite * (prozent / 100))
                neue_höhe = int(höhe * (prozent / 100))

                # Bild verkleinern
                verkleinertes_bild = bild.resize((neue_breite, neue_höhe), Image.LANCZOS)

                # Verkleinertes Bild überschreiben
                verkleinertes_bild.save(dateipfad)

    except Exception as e:
        print(f"Fehler beim Verkleinern der Bilder: {str(e)}")

# Alle PNGs im Ordner verkleinern und überschreiben
verkleinere_alle_pngs(eingabeordner, verkleinerungsprozent)

Das Problem ist, dass wenn ich in VCS das öffne nur das hier passiert :
1694450999980.png

Wie fixe ich das, oder gibt es ein programm was meine Anforderungen kann ? Danke :)
 
Und was heißt "Programm startet nicht?"? Wie startest du denn das Skript und was kommt für eine Ausgabe?
 
Ich sehe in der Console nur das was im Screenshot zusehen ist
 
Du rufst die Funktion ja nie auf, da ja nicht die main.
Das musst du ca. so machen:
Code:
def main():
     verkleinere_alle_pngs(ordner, prozent)

if name == "main":
    main()

und dabei natürlich vorher die variablen "ordner" & "prozent" irgendwo definieren.

Dabei ist es Konvention, dass eine ausführende Python Datei main.py heißt, deswegen die Abfrage nach dem Namen aber die Funktion main() wird jedenfalls ausgeführt.
 
Doch tut er. Siehe Zeile 37. Nicht sehr schön aber wird damit aufgerufen.
 
  • Gefällt mir
Reaktionen: eigsi124
Du hast aber auch keinerlei Outputs in dem Skript. Da würde ich mal ein paar rein machen oder einen breakpoint setzen.

Was kommt bei python --version?
 
problem ist gelöst. Brauchte nur den kleinen Denkstupser ;)
 
Bitopium schrieb:
Doch tut er. Siehe Zeile 37. Nicht sehr schön aber wird damit aufgerufen.
a ja hatte ich übersehen.
 
  • Gefällt mir
Reaktionen: Bitopium
Die if struktur und einmal vsc neugestartet, eins von beiden hats gemacht.
 
Zurück
Oben