Ordner auf seinen Inhalt durchsuchen...

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
T-User
User
Beiträge: 13
Registriert: Dienstag 4. Oktober 2016, 17:58

Hallo Zusammen,

hoffe mein erstes Post geht nicht daneben :-)

Habe ein kleines Problem als Python-Neuling und hoffe hier
die Hilfestellung zu bekommen. Ich weiß leider nicht mehr weiter
bei meinem Problem.

Aufgabe: Durch die Eingabe von einem Zielordner (was das auch sein mag) soll
der Inhalt in eine Textdatei als Liste geschrieben und (später) weiter verarbeitet
werden.

Was ich schon erreicht haben:

Code: Alles auswählen

import os

# Textdateianlegen
text_datei = open ("Dateiauflistung.txt","w")

# Gebe den zu durchsuchenden Ordner an
pdir = input ("""Geben Sie den Verzeichniss an
""")

# Anlegen einer Liste. Da werden alle Dateinamen eingetragen.
path_f = []

# For-Schleife mit Dateierfassung und os.walk-Konfiguration
for d, dirs, files in os.walk(pdir):
	for f in files:
		path = os.path.join(d,f)
		path_f.append(path)

for files in path_f:
	text_datei.write(str(files) + "\n")
	
text_datei.close()

print ("Fertig")
Fazit:

Soweit so gut kriege auch eine vernünftige Liste raus.
z.B. beim Druchsuchen von Python-Ordner "Scripts" sieht das so aus.

C:\Python34\Scripts\build_exe-script.py
C:\Python34\Scripts\build_exe.exe
C:\Python34\Scripts\easy_install-3.4.exe
C:\Python34\Scripts\easy_install.exe
C:\Python34\Scripts\pip.exe
C:\Python34\Scripts\pip3.4.exe
C:\Python34\Scripts\pip3.exe
C:\Python34\Scripts\__pycache__\build_exe-script.cpython-34.pyc
C:\Python34\Scripts\__pycache__\build_exe-script.cpython-34.pyo

Problem:

Sobald ich mein Ordner Musik durchsuche in welchem auch Videos drin sind bleibt
das Programm hängen.

Was mache ich falsch? Kann der Python die Endungen nicht raus lesen?

Wäre Euch sehr dankbar da mir das Programm das Leben leichter machen würde.

Schöne Grüße, T-User.
Zuletzt geändert von Anonymous am Dienstag 4. Oktober 2016, 19:08, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@T-User: Hängen bleiben kann ja verschiedene Ursachen haben. Entweder irgend ein Verzeichnis kann tatsächlich nicht gelesen werden, weil z.B. eine Netzwerkverbindung hängt, oder es sind einfach sehr viele Dateien, so dass das Programm länger läuft als gedacht. Das kann man einfach unterscheiden, indem man Debug-Ausgaben macht, z.B. das aktuell verarbeitete Verzeichnis.

Zum Programm: gute Variablennamen sind wichtig für das Verständnis. Was soll z.B. das p in pdir heißen? oder das f in path_f? Einbuchstabe Variablennamen sollte man auch vermeiden. Warum sammelst Du die Dateinamen erst in einer Liste und schreibst sie nicht gleich in die Datei?
T-User
User
Beiträge: 13
Registriert: Dienstag 4. Oktober 2016, 17:58

Na ja,

wie schon bereits gesagt - bin ein Neuling und
wenn ich wüsste wie ich es direkt schreiben kann würde ich es
auch machen. Namen sind einfach vergeben worden. Wenn es läuft
kann ich es immer noch schön machen ;-)
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Gute Namen zeigen, ob man das Problem auch verstanden hat und sich genug Gedanken gemacht hat. Das hat nichts mit schön zu tun.

So, z.B:

Code: Alles auswählen

import os
import logging
logging.basicConfig(level=logging.DEBUG)

basepath = input ("Geben Sie den Verzeichniss an:")
with open("Dateiauflistung.txt", "w") as output:
    for path, _, filenames in os.walk(basepath):
        logging.debug("Processing %s" % path)
        for filename in filenames:
            output.write('%s\n' % os.path.join(path, filename)
print("Fertig")
T-User
User
Beiträge: 13
Registriert: Dienstag 4. Oktober 2016, 17:58

Hallo Sirius3,

Du hast recht. Da gibt es keine Diskussionen. Sobald ich alles verstanden habe,
werde ich es machen ;-)

Danke Dir für Lösungsansatz! Werde ausprobieren und berichten.

Schöne Grüße, T-User.
Antworten