Я пытаюсь автоматизировать карту каталогов для каталога Johnny Decimal как документ R Markdown. Мой скрипт Python возвращает только каталог верхнего уровня. Я вообще не опускаю второй уровень.
Я пробовал использовать «import pathlib» и «import os». Я продвинулся дальше с "import os"
import os
path = "c:\\local\\top"
print("# Johnny Decimal\r\n")
for d1 in filter(os.path.isdir, os.listdir(path)):
path2 = path + "\\" + d1
print("## " + d1 + "\r\n")
for d2 in filter(os.path.isdir, os.listdir(path2)):
print("### " + d2 + "\r\n")
Я получил:
# Johnny Decimal
## 10
## 20
Я ожидал получить:
# Johnny Decimal
## 10
### 11
### 12
## 20
### 21
### 22






os.listdir возвращает только имена файлов без путей, и все же os.path.isdir ожидает полные пути, поэтому вы должны использовать os.path.join, чтобы соединить имена путей с именами файлов, прежде чем передавать их в os.path.isdir:
for d1 in os.listdir(path):
path2 = os.path.join(path, d)
if os.path.isdir(path2):
print("## " + d1 + "\r\n")
for d2 in os.listdir(path2):
if os.path.isdir(os.path.join(path2, d2)):
print("### " + d2 + "\r\n")
См. stackoverflow.com/questions/35315873/… - вам нужно изменить его, чтобы указать имена каталогов, но это дает вам то, что вам нужно, чтобы установить уровень глубины с помощью os.walk.