Jak načíst rekurzivně všechny názvy položek v adresáři?
Ahoj, mám adresář který obsahuje soubory i další pod adresáře a to několik úrovní, jak můžu uložit do pole všechny tyto názvy v programu Python. Děkuji
Ahoj, mám adresář který obsahuje soubory i další pod adresáře a to několik úrovní, jak můžu uložit do pole všechny tyto názvy v programu Python. Děkuji
Předmět | Autor | Datum |
---|---|---|
import os
rootDir = '.'
for dirName, subdirList, fileList in os.walk(rootDir):
print('Found directo… dsa 26.01.2022 14:27 |
dsa | |
Python nijak neznám, tak nevím, jaké má možnosti. Klasický postup spočívá v rekurzivním procházení,… poslední ml1 26.01.2022 14:44 |
ml1 |
Zpět do poradny Odpovědět na původní otázku Nahoru
import os
rootDir = '.'
for dirName, subdirList, fileList in os.walk(rootDir):
print('Found directory: %s' % dirName)
for fname in fileList:
print('\t%s' % fname)
Můžeš zkusit tohle.
Python nijak neznám, tak nevím, jaké má možnosti. Klasický postup spočívá v rekurzivním procházení, zavolá se funkce s názvem adresáře (cestou) a ta prochází adresář, když narazí na vnořený adresář, tak zavolá sebe sama s cestou rozšířenou o adresář. Principiálně je to jednoduché, jenom to ladění dá trochu zabrat, aby se ta rekurze nezacyklila (je potřeba vynechat položky . a ..) což je ale nebezpečí u každé rekurze (dřív nastal brzo konec díky stack owerflow, ale s dnešními pamětmi i tohle trvá dost dlouho) a tak podobně. Programoval jsem to mnohokrát v různých jazycích a prostředích (taky jsem řešil situaci, že se musí nejdřív adresář projít celý a pak teprve procházet další, tedy bylo potřeba si složky někam ukládat a volat další až ke konci té funkce), ale python neznám, i když někdy by se hodil, tak nevím jaké má možnosti (teda procházení složek bude spíš záležitostí operačního systému).