Seite 1 von 1

Bilddateien bis zu einer bestimmten Größe löschen

Verfasst: Mittwoch 26. Mai 2021, 09:01
von RAM
Hallo Python-Cracks,

ich bin noch neu in der Python-Programmierung, aber hab da vielleicht schon eine Anwendung dafür gefunden. Allerdings bräuchte ich hierbei eure Hilfe.
Es geht um folgendes:
Ich habe letztens mit meinem Teleskop Aufnahmen der ISS gemacht, das ganze habe ich per Hand nachgeführt und mit einer Astrocam ein AVI-Video aufgezeichnet. Dieses AVI-Video habe ich in einzelne Frames zerlegt, damit ich einzelne Bilddateien (.png) zum stacken habe. Und jetzt kommt mein Problem: Ich habe sehr viele Aufnahmen, die einfach nur schwarz sind, d.h. keine ISS drauf ist. Bis jetzt habe ich diese immer von Hand gelöscht, beim letzten mal sind von ca. 3000 Einzelframes ungefähr 300 übrig geblieben. Da dieses "ausmisten" doch sehr nervig ist, wäre es vielleicht praktisch, hier ein kleines Python-Skript zu nutzen, das mir diese Arbeit abnimmt. Mein Gedanke war, das ganze eventuell über die Dateigröße zu machen, ich habe mal nachgesehen, ein Einzelframe, nur mit schwarzem Hintergrund, hat eine Größe von max. 30 Kb. Wenn das Skript nun in einem Ordner alle Bilder löscht, die kleiner sind als 30 Kb sollten somit also nur die Bilder übrig bleiben, auf der auch die ISS zu sehen ist. Allerdings habe ich keinen Plan, wie ich das lösen kann, vielleicht kann mir hier jemand von euch helfen.

Viele Grüße,

Martin

Re: Bilddateien bis zu einer bestimmten Größe löschen

Verfasst: Donnerstag 27. Mai 2021, 05:36
von sparrow
Alles was mit Pfaden und Dateien zu tun hat macht man in aktuellen Python Versionen mit dem "pathlib" Modul.

Ein pathlib.Path hat die Methode .stat(). Wenn du dir die Rückgabe davon anschaust findest du in st_size die Dateigröße.

Re: Bilddateien bis zu einer bestimmten Größe löschen

Verfasst: Donnerstag 27. Mai 2021, 07:01
von __blackjack__
@RAM: Ungetestet und für die ... muss natürlich noch der Pfad zu dem Ordner mit den PNG-Dateien eingetragen werden:

Code: Alles auswählen

#!/usr/bin/env python3
from pathlib import Path


def main():
    for path in Path("...").glob("*.png"):
        if path.is_file() and path.stat().st_size < 30 * 1024:
            path.unlink()


if __name__ == "__main__":
    main()

Re: Bilddateien bis zu einer bestimmten Größe löschen

Verfasst: Donnerstag 27. Mai 2021, 19:16
von nezzcarth
Der Vollständigkeit halber: Wenn es nur um die Erledigung der Aufgabe geht und du eine Unix/Linux-Umgebung zur Verfügung hast, geht auch sowas in der Richtung:

Code: Alles auswählen

find . -type f -size +300M -iname "*.jpg" # -delete
Das '-delete' kann man dann zum Löschen auskommentieren.