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
Bilddateien bis zu einer bestimmten Größe löschen
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.
Ein pathlib.Path hat die Methode .stat(). Wenn du dir die Rückgabe davon anschaust findest du in st_size die Dateigröße.
- __blackjack__
- User
- Beiträge: 14056
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
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:
Das '-delete' kann man dann zum Löschen auskommentieren.
Code: Alles auswählen
find . -type f -size +300M -iname "*.jpg" # -delete