Gibt es eine Möglichkeit, eine Liste aller Unterverzeichnisse im aktuellen Verzeichnis in Python zurückzugeben?
Ich weiß, dass man das mit Dateien machen kann, aber ich muss stattdessen die Liste der Verzeichnisse bekommen.
Gibt es eine Möglichkeit, eine Liste aller Unterverzeichnisse im aktuellen Verzeichnis in Python zurückzugeben?
Ich weiß, dass man das mit Dateien machen kann, aber ich muss stattdessen die Liste der Verzeichnisse bekommen.
Ich hatte vor kurzem eine ähnliche Frage, und ich fand heraus, dass die beste Antwort für Python 3.6 (wie Benutzer havlock hinzugefügt) zu verwenden ist os.scandir
. Da es anscheinend keine Lösung dafür gibt, werde ich meine eigene hinzufügen. Zunächst eine nicht-rekursive Lösung, die nur die Unterverzeichnisse direkt unter dem Stammverzeichnis auflistet.
def get_dirlist(rootdir):
dirlist = []
with os.scandir(rootdir) as rit:
for entry in rit:
if not entry.name.startswith('.') and entry.is_dir():
dirlist.append(entry.path)
dirlist.sort() # Optional, in case you want sorted directory names
return dirlist
Die rekursive Version würde wie folgt aussehen:
def get_dirlist(rootdir):
dirlist = []
with os.scandir(rootdir) as rit:
for entry in rit:
if not entry.name.startswith('.') and entry.is_dir():
dirlist.append(entry.path)
dirlist += get_dirlist(entry.path)
dirlist.sort() # Optional, in case you want sorted directory names
return dirlist
bedenken Sie, dass entry.path
gibt den absoluten Pfad des Unterverzeichnisses an. Falls Sie nur den Ordnernamen benötigen, können Sie entry.name
stattdessen. Siehe os.DirEntry für weitere Einzelheiten über die entry
Objekt.
Dadurch werden alle Unterverzeichnisse bis hinunter zum Dateibaum aufgelistet.
import pathlib
def list_dir(dir):
path = pathlib.Path(dir)
dir = []
try:
for item in path.iterdir():
if item.is_dir():
dir.append(item)
dir = dir + list_dir(item)
return dir
except FileNotFoundError:
print('Invalid directory')
pathlib
ist neu in Version 3.4
Funktion, die eine Liste aller Unterverzeichnisse innerhalb eines gegebenen Dateipfads zurückgibt. Durchsucht den gesamten Dateibaum.
import os
def get_sub_directory_paths(start_directory, sub_directories):
"""
This method iterates through all subdirectory paths of a given
directory to collect all directory paths.
:param start_directory: The starting directory path.
:param sub_directories: A List that all subdirectory paths will be
stored to.
:return: A List of all sub-directory paths.
"""
for item in os.listdir(start_directory):
full_path = os.path.join(start_directory, item)
if os.path.isdir(full_path):
sub_directories.append(full_path)
# Recursive call to search through all subdirectories.
get_sub_directory_paths(full_path, sub_directories)
return sub_directories
Diese Funktion, mit einer gegebenen übergeordneten directory
iteriert über alle seine directories
rekursiv und prints
alle filenames
die sie im Inneren findet. Zu nützlich.
import os
def printDirectoryFiles(directory):
for filename in os.listdir(directory):
full_path=os.path.join(directory, filename)
if not os.path.isdir(full_path):
print( full_path + "\n")
def checkFolders(directory):
dir_list = next(os.walk(directory))[1]
#print(dir_list)
for dir in dir_list:
print(dir)
checkFolders(directory +"/"+ dir)
printDirectoryFiles(directory)
main_dir="C:/Users/S0082448/Desktop/carpeta1"
checkFolders(main_dir)
input("Press enter to exit ;")
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.