Listowanie nazw katalogów bez rekursji w podkatalogu

0

Cześć!

Poległem na prostej rzeczy (jak mi się wydawało)
Mam katalog c:/moje/pobrane a w nim katalogi które zawierają inne katalogi i pliki. W jaki sposób stworzyć listę katalogów w katalogu pobrane/? (bez dalszego wnikania w podkatalogi czy pliki ) - tylko katalogi z c:/moje/pobrane
ma to być umieszczone jeden pod drugim w listbox np ct_listbox.insert(tk.END, i)

Wykorzystałęm os.walk(path) ale wyszukuje mi wszystkie podkatalogi :(

3

Pathlib i podmetoda dir() / isdir().

2

Możesz też użyć modułu glob.

import glob
 
rootdir = r'c:\moje\pobrane'
for path in glob.glob('%s/*/'%(rootdir)):
	print(path)
0
Spine napisał(a):

Możesz też użyć modułu glob.

import glob
 
rootdir = r'c:\moje\pobrane'
for path in glob.glob('%s/*/'%(rootdir)):
	print(path)

Dziękuję! Działa jeden i drugi sposób :) TYLKO zwraca mi pełną ścieżkę - jak ograniczyć tylko do samych nazw katalogu?

1

W pathlib.Path masz atrybut name.

1
harnasx napisał(a):

TYLKO zwraca mi pełną ścieżkę - jak ograniczyć tylko do samych nazw katalogu?

import glob, os
 
rootdir = r'c:\moje\pobrane'
for path in glob.glob('%s/*/'%(rootdir)):
	print(os.path.basename(path[:-1]))

path[:-1], bo jeśli nie usunę slasha na końcu, to funkcja basename zwraca pusty łańcuch znaków.

1

os.walk() najpierw zwraca katalogi bezpośrednio w szukanym katalogu, a dopiero potem w podkatalogach, możesz więc zrobić po prostu
zamienić

os.walk(path)

na

[next(os.walk(path))]

i będzie działać tak jak chcesz :)

Dostaniesz również z niego samą ścieżkę, bez bawienia się w basename().

1 użytkowników online, w tym zalogowanych: 0, gości: 1