611 Stimmen

Verzeichnisbaum-Liste in Python

Wie erhalte ich eine Liste aller Dateien (und Verzeichnisse) in einem bestimmten Verzeichnis in Python?

2 Stimmen

Rekursiv oder nicht? Bitte klären Sie das. Für nicht rekursive Lösungen siehe: stackoverflow.com/questions/973473/

0voto

bng44270 Punkte 329

Ich dachte, ich werfe das mal ein. Einfache und schmutzige Art und Weise zu tun, Wildcard-Suchen.

import re
import os

[a for a in os.listdir(".") if re.search("^.*\.py$",a)]

0voto

moylop260 Punkte 1191

FYI Hinzufügen eines Filters für die Erweiterung oder ext-Datei os importieren

path = '.'
for dirname, dirnames, filenames in os.walk(path):
    # print path to all filenames with extension py.
    for filename in filenames:
        fname_path = os.path.join(dirname, filename)
        fext = os.path.splitext(fname_path)[1]
        if fext == '.py':
            print fname_path
        else:
            continue

0voto

salehinejad Punkte 6104

Hier ist eine einzeilige Pythonic-Version:

import os
dir = 'given_directory_name'
filenames = [os.path.join(os.path.dirname(os.path.abspath(__file__)),dir,i) for i in os.listdir(dir)]

Dieser Code listet den vollständigen Pfad aller Dateien und Verzeichnisse im angegebenen Verzeichnisnamen auf.

0 Stimmen

Danke Saleh, aber dein Code hat nicht ganz funktioniert, und der, der funktioniert hat, wurde wie folgt geändert: 'dir = 'given_directory_name' filenames = [os.path.abspath(os.path.join(dir,i)) for i in os.listdir(dir)]'

0voto

apeter Punkte 171

Ich weiß, dies ist eine alte Frage. Dies ist eine nette Möglichkeit, die ich gefunden habe, wenn Sie eine Lunx-Maschine haben.

import subprocess
print(subprocess.check_output(["ls", "/"]).decode("utf8"))

3 Stimmen

Dies ist sehr sowohl ineffizient als auch fehleranfällig. Python weiß sehr wohl, wie man eine Verzeichnisliste durchläuft und sollten Sie nicht verwenden ls in Skripten sowieso nie.

0voto

Alok Punkte 25
#import modules
import os

_CURRENT_DIR = '.'

def rec_tree_traverse(curr_dir, indent):
    "recurcive function to traverse the directory"
    #print "[traverse_tree]"

    try :
        dfList = [os.path.join(curr_dir, f_or_d) for f_or_d in os.listdir(curr_dir)]
    except:
        print "wrong path name/directory name"
        return

    for file_or_dir in dfList:

        if os.path.isdir(file_or_dir):
            #print "dir  : ",
            print indent, file_or_dir,"\\"
            rec_tree_traverse(file_or_dir, indent*2)

        if os.path.isfile(file_or_dir):
            #print "file : ",
            print indent, file_or_dir

    #end if for loop
#end of traverse_tree()

def main():

    base_dir = _CURRENT_DIR

    rec_tree_traverse(base_dir," ")

    raw_input("enter any key to exit....")
#end of main()

if __name__ == '__main__':
    main()

5 Stimmen

Auf diese Frage gibt es bereits eine sehr gute Antwort, es ist nicht nötig, sie noch einmal zu beantworten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X