У меня есть папка test
, из которой я хочу подсчитать числа projects
, buildings
и txt_files
по следующему правилу.
Для числа projects
оно просто равно количеству подпапок подкаталогов первого слоя. Для числа buildings
оно равняется номерам первого уровня подкаталогов, если у него нет второго уровня подкаталогов, в противном случае считается второй уровень подкаталогов.
├─a
│ ├─a1
│ ├─a2
│ └─a3
│ ├─a3_1.txt
│ ├─a3_2.geojson
│ └─a3_3.txt
├─b
│ ├─b1
│ ├─b2
│ ├─b3
│ └─b4
├─c
│ ├─c1
│ ├─c2
│ └─c3
├─d
└─123.txt
Для следующих примеров структур: num_projects
- это 4
, который содержит подпапки первого слоя: a, b, c, d
; в то время как num_buildings
равен 11
, который содержит подкаталоги: a1, a2, a3, b1, b2, b3, b4, c1, c2, c3 and d
; и num_txt
равно 3
.
Мое решение до сих пор:
import os
path = os.getcwd()
num_projects = 0
num_buildings = 0
num_txt = 0
for subdirs in os.listdir(path):
num_projects += 1
for root, dirnames, filenames in os.walk(path):
for dirname in dirnames:
num_buildings += 1
for filename in filenames:
if filename[-4:] == ".txt":
num_txt += 1
print("Number of projects is %d, number of buildings is %d, number of txt files is %d." %(num_projects, num_buildings, num_txt))
Вывод:
Number of projects is 5, number of buildings is 17, number of txt files is 3.
num_projects
и num_buildings
неверны. Как я могу сделать это правильно? Спасибо.