Dateien in Ordner suchen, Dateinamen in txt Datei speichern

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
kollimann
User
Beiträge: 2
Registriert: Mittwoch 20. Mai 2020, 21:36

Hallo, bin neu in Python, werde im Moment nur kleine Sachen in Python machen. Ich weiß was programmieren und Scripte schreiben ist, nur Python ist Neuland für mich.

Eine kleine Aufgabe wobei ich Hilfe benötige.

- 2 Ordner nach Dateien durchsuchen
- die Dateinamen incl Dateiendung (Anzahl und Namen sind unbekannt) in eine txt Datei schreiben, Zeilenweise
- ABER wenn möglich in folgender Form, angenommen in Ordner1 sind 5 Dateien und in Ordner2 sind 2 Dateien...... als Beispiel, die Anzahl kann sich immer ändern !
aus Ordner1 Pfad/Datei1
aus Ordner2 Pfad/Datei1
aus Ordner1 Pfad/Datei2
aus Ordner2 Pfad/Datei2
aus Ordner1 Pfad/Datei3
aus Ordner2 Pfad/Datei1 (da ja nur 2Dateien in Ordner2 sind, wieder mit der ersten beginnen)
aus Ordner1 Pfad/Datei4
aus Ordner2 Pfad/Datei2
aus Ordner1 Pfad/Datei5
aus Ordner2 Pfad/Datei1

das war es eigentlich schon.
Ich würde mich freuen wenn mir jemand helfen kann

Danke Heiko
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@kollimann: Das sieht nach `pathlib.Path` aus um die Pfade zu den Dateien zu ermitteln, dann `itertools.cycle()`, das man auf die kürzere Liste anwendet, und dann die `zip()`-Funktion um die Pärchen daraus zu erzeugen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
kollimann
User
Beiträge: 2
Registriert: Mittwoch 20. Mai 2020, 21:36

Pfade muss ich nicht ermitteln, die 2 Ordner die durchsucht werden sollen können fest vorgegeben werden.
ich habe folgendes, das gibt mir die Dateinamen aus, erstmal hintereinander......

Code: Alles auswählen

import glob
import os
def files(path):
    for file in os.listdir(path):
        if os.path.isfile(os.path.join(path, file)):
            yield file
for file in files("/storage/videos/"):
    print (file)

for file in files("/storage/pictures/"):
    print (file)

ich beginne ja zu lernen. Mit dem Code hab ich meine gewünschten Dateinamen.
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@kollimann: Ich schrob „Pfade zu den Dateien ermitteln“ und das muss man schon, denn Du willst ja die Pfade zu den Dateien haben. Also nicht die Pfade in denen die Dateien liegen sondern die kompletten Pfade die zu jeder einzelnen Datei führen. Und das macht man eher nicht mehr mit `os` sondern eben mit `pathlib`.

Code: Alles auswählen

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


def iter_file_paths(base_path):
    return (path for path in base_path.iterdir() if path.is_file())


def main():
    storage_path = Path("/storage")
    for directory_name in ["videos", "pictures"]:
        for file_path in iter_file_paths(storage_path / directory_name):
            print(file_path)


if __name__ == "__main__":
    main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten