Variablen werden in einzelne Zeilen geprintet

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
Frostie
User
Beiträge: 15
Registriert: Freitag 14. April 2017, 18:16

Hallo liebe Community!
Bin neu im Forum, nehmt's mir also nicht übel :D

Ich habe hier folgenden Code, um alle Dateien im aktuellen Verzeichnis + Unterordnern ausfindig zu machen:

Code: Alles auswählen

import os

currentdir = os.getcwd()	#Aktuelles Verzeichnis

for path, subdirs, files in os.walk(currentdir):
        for filename in [fi for fi in files if not fi.endswith(".pyc")]: #Keine pycache-Dateien
            print(filename)
            f = os.path.join(path, filename)	#Pfad zur aktuellen Datei
            print(f)
Dann bekomme ich alle filenames bzw. f's untereinander (in einzelne Zeilen) geprintet und hier ist das Problem. Ich möchte die ganzen Variablen in eine Liste bekommen. Ich hatte mal einen einfacheren Code, ging jetzt aber leider nicht.

Wie kriege ich das ganze in eine Liste?
Mit .append() klappt es ja nicht da hier immer das erste genommen wird. Ich finde es echt komisch, dass alles in eine neue Zeile geprintet wird. Wie kann ich das ändern? Ist aber anscheinend normal bei einer for-Funktion wie ich herausgefunden habe.

Danke :)

Mit freundlichen Grüßen, Daniel
Sirius3
User
Beiträge: 18264
Registriert: Sonntag 21. Oktober 2012, 17:20

@Frostie: was meinst Du damit, dass bei append immer das erste genommen wird?

Code: Alles auswählen

import os

currentdir = os.getcwd()   #Aktuelles Verzeichnis
all_files = []
for path, subdirs, filenames in os.walk(currentdir):
    for filename in filenames:
        if not fi.endswith(".pyc"): # Keine pycache-Dateien
            all_files.append(os.path.join(path, filename))   # Pfad zur aktuellen Datei
print(all_files)
Frostie
User
Beiträge: 15
Registriert: Freitag 14. April 2017, 18:16

Oh vielen Dank! Funktioniert!

Ich meinte damit, dass .append() nur die erste Zeile aufnimmt.

Wenn jetzt
A
B
C
geprintet wird, wird nur A in die Liste aufgenommen.

Grüße
BlackJack

@Frostie: Das mit dem `append()` macht immer noch keinen Sinn. Wenn nur A aufgenommen wird, dann hast Du auch nur für A `append()` aufgerufen. Das ist aber kein Problem mit `append()`, Du hättest es halt auch für B und C aufrufen müssen.
Antworten