einzelne Dateien verschieben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Basti666
User
Beiträge: 1
Registriert: Freitag 2. September 2022, 09:53

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)
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

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.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

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()
Antworten