32-строчный эмулятор счётчика в Explorer.exe на Пайтоне. Cчитает всё без разбора, поэтому на /dev и другие блочные девайсы направлять не рекомендуется :)
#!/usr/bin/python3
import os,sys
sumSizes = 0
countFiles = 0
countDirs = 0
def reDraw(size):
global sumSizes
sumSizes += size
outString = '\r{0} bytes total, {1} directories and {2} files...'.format(sumSizes, countDirs, countFiles)
print(outString, end='')
def getSizeRecursively(path):
global countDirs
global countFiles
try:
for entry in os.scandir(path):
if not entry.is_dir(follow_symlinks=False):
countFiles += 1
try:
reDraw(entry.stat().st_size)
except:
continue
else:
countDirs +=1
reDraw(entry.stat(follow_symlinks=False).st_size)
getSizeRecursively(entry.path)
except OSError:
pass
getSizeRecursively(sys.argv[1])