Seite 1 von 1

einzelne Dateien verschieben

Verfasst: Freitag 2. September 2022, 10:03
von Basti666
Hallo, ich habe letzte Woche erst mit Python angefangen,

ich habe einen Sammelordner erstellt in dem Dateien gesammelt werden, jetzt will ich das die Dateien weg sortiert werden.

Die Sortierung funktioniert schon, aber mir räumt es immer den ganzen Inhalt in dem Ordner mit weg, also würde ich das gern auf einzelne Dateien spezifizieren. Sodass die Einzelne Datei die gerade verglichen wird nur verschoben wird.

Code: Alles auswählen

dateien = os.listdir()
print(os.listdir())
for bauteile in dateien:
    SAP_Nr, Projekt_Nr, Werk, Messart, Fertigungsauftrag, Teil_Nr, Datum, Bemerkung, nichts = bauteile.split('_')

# Beuteil wird verglichen und verschoben in Zielordner
if SAP_Nr == '730545S00B':
    ziel = r'C:\Users\Ich\Desktop\730 545\S00B'
    for datei in dateien:
        shutil.move(datei, ziel)
elif SAP_Nr == '730545H12A':
    ziel = r'C:\Users\Ich\Desktop\730 545\H12'
    for datei in dateien:
        shutil.move(datei, ziel)

Re: einzelne Dateien verschieben

Verfasst: Freitag 2. September 2022, 10:18
von sparrow
Du durchläuft in einer for-Schleife alle Dateien und verschiebst die. Das Programm macht also genau das, was du ihm sagst. Hier darfst du natürlich nur die aktuelle Datei angeben. Und deren Namen solltest du an einen Namen binden, bevor du ihn mit split zerlegt.

Re: einzelne Dateien verschieben

Verfasst: Freitag 2. September 2022, 10:37
von Sirius3
os.listdir verwendet man nicht mehr, sondern pathlib.Path.iterdir. Variablennamen schreibt man komplett klein. Die Einrückung scheint falsch zu sein, da nur eine Zeile innerhalb der for-Schleife liegt. Die Zielordner scheinen eine Struktur zu haben, die man nutzen kann, um nicht hunderte if-Abfragen machen zu müssen.

Code: Alles auswählen

from pathlib import Path
import shutil

SOURCE_PATH = Path(...)
TARGET_PATH = Path.home() / "Desktop"

def main():
    for file in SOURCE_PATH.iterdir():
        sap_nr, *other = file.name.split('_')
        # Beuteil wird verglichen und verschoben in Zielordner
        if sap_nr in ['730545S00B', '730545H12A']:
            target = TARGET_PATH / f"{sap_nr[:3]} {sap_nr[3:6]}" / sap_nr[6:]
            shutil.move(file, target)


if __name__ == "__main__":
    main()