Bildersortieren via Python

Status
Es sind keine weiteren Antworten möglich.

Maximilian D

Mitglied
Hallo Zusammen,
da ich keine Lust habe nach einer mehrtätigen Aufnahmesession die Bilder händisch als LIGHT, FLAT, DARKFLAT usw. zu sortieren habe ich ein kleines Pythonscript gemacht dass mir in Zunkunft diese Arbeit abnehmen soll. Es ist zwar nicht besonder eglegant aber es funktioniert. Falls jemand Anmerkungen hat, oder ideen für zusätzliche Funktionen immer her damit! Ich konnte im Forum keinen ähnlichen Beitrag finden falls das schon ein alter Hut ist würde ich mich über eine veweis auf den jeweiligen Thread freuen. Da zumindest bei mir die Indents verschwinden wenn ich den Beitrag poste habe ich im Anhang noch ein screenshot.
CS Max

import os
import shutil

def sort_fits_files(root_path):
#Zielordner einfügen
target_folder = os.path.join(root_path, "D:\Astro Work\M45\sorted")
os.makedirs(target_folder, exist_ok=True)


for folder_name, subfolders, filenames in os.walk(root_path):
for filename in filenames:
if filename.endswith(".fits"):
# Stichwort eintragen z.B. verwendeter Filter
if "Lumi" in filename or "Rot" in filename or "Blau" in filename or "Grun" in filename or "Ha" in filename or "OIII" in filename or "SII" in filename:
# Wie willst du die neu erstellten Ordner bennen?
target_folder_name = ""
if "Lumi" in filename:
target_folder_name += "Lumi"
if "Rot" in filename:
target_folder_name += "Rot"
if "Blau" in filename:
target_folder_name += "Blau"
if "Grun" in filename:
target_folder_name += "Grun"
if "Ha" in filename:
target_folder_name += "Ha"
if "OIII" in filename:
target_folder_name += "OIII"
if "SII" in filename:
target_folder_name += "SII"
target_folder_name += "_" + os.path.basename(folder_name)

# Erstellt die Zielordner
target_subfolder = os.path.join(target_folder, target_folder_name)
os.makedirs(target_subfolder, exist_ok=True)

# Das eigentliche Kopieren der Daten
source_file = os.path.join(folder_name, filename)
target_file = os.path.join(target_subfolder, filename)
shutil.copy(source_file, target_file)
print("Jobs done!")

# Von wo soll er die Daten entnehmen?
sort_fits_files("D:\Astro Work\M45\RAW")
 

Anhänge

  • Astroscript.JPG
    Astroscript.JPG
    196,7 KB · Aufrufe: 116
Mir kam direkt im Anschluss noch die Idee den Dateipfad etwas übersichtlicher zu gestalten.
Die Ordnerstruktur ist nun: Datum->Filter->Bildtyp (Dark, Flat, usw.) ->Datein
Falls bei euch die ersten 10 Stellen nicht das Datum wiedergeben müsst ihr halt noch date = filename[:10] anpassen.
CS, Max

import os
import shutil

def sort_fits_files(root_path):
# Zielordner einfügen
target_folder = os.path.join(root_path, "D:\Astro Work\M45\Sorted")
os.makedirs(target_folder, exist_ok=True)

for folder_name, subfolders, filenames in os.walk(root_path):
for filename in filenames:
if filename.endswith(".fits"):
# Datum aus dem Dateinamen extrahieren
date = filename[:10]

# Stichwort eintragen z.B. verwendeter Filter
if "Lumi" in filename or "Rot" in filename or "Blau" in filename or "Grun" in filename or "Ha" in filename or "OIII" in filename or "SII" in filename:
# Wie willst du die neu erstellten Ordner benennen?
target_folder_name = ""
if "Lumi" in filename:
target_folder_name += "Lumi"
if "Rot" in filename:
target_folder_name += "Rot"
if "Blau" in filename:
target_folder_name += "Blau"
if "Grun" in filename:
target_folder_name += "Grun"
if "Ha" in filename:
target_folder_name += "Ha"
if "OIII" in filename:
target_folder_name += "OIII"
if "SII" in filename:
target_folder_name += "SII"

# Erstellt den Zielordner mit dem Datum
target_date_folder = os.path.join(target_folder, date)
os.makedirs(target_date_folder, exist_ok=True)

# Erstellt die Zielordner Struktur
source_file = os.path.join(folder_name, filename)
target_keyword_folder = os.path.join(target_date_folder, target_folder_name)
target_subfolder = os.path.join(target_keyword_folder, target_folder_name + "_" + os.path.basename(folder_name))
os.makedirs(target_subfolder, exist_ok=True)

# Das eigentliche Kopieren der Daten
target_file = os.path.join(target_subfolder, filename)
shutil.copy(source_file, target_file)

print("Jobs done!")

# Von wo soll er die Daten entnehmen?
sort_fits_files("D:\Astro Work\M45\RAW")
 

Anhänge

  • Astroscript_V2.JPG
    Astroscript_V2.JPG
    231,4 KB · Aufrufe: 109
  • Astropython_V2.txt
    Astropython_V2.txt
    2,4 KB · Aufrufe: 99
Hey,
das Forum hat auch eine Code-formatierung, verborgen hinter den drei Punkten nach dem "Insert-Video" Symbol (oder manuell mit ['CODE] und [/CODE], ohne das Anführungszeichen in der ersten Klammer):
Code:
import os
import shutil

def sort_fits_files(root_path):
    # Zielordner einfügen
    target_folder = os.path.join(root_path, "D:\Astro Work\M45\Sorted")
    os.makedirs(target_folder, exist_ok=True)

    for folder_name, subfolders, filenames in os.walk(root_path):
        for filename in filenames:
            if filename.endswith(".fits"):
                # Datum aus dem Dateinamen extrahieren
                date = filename[:10]
[snipp]

Viele Grüße und CS,
Matthias
 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben