Нестабильное количество файлов и каталогов

Нестабильное количество файлов и каталогов

Ситуация: У меня есть скрипт Python, который будет рекурсивно и раздельно подсчитывать общее количество файлов и каталогов. Ниже приведен код:

def traverse(top):
    filecount = 0
    dircount = 0
    for root, dirs, files in os.walk(top):
        for f in files:
            if dirs: dircount += 1
            elif files: filecount += 1
            else:
                print("Error")
                break
    print("Num of dir: " + dircount)
    print("Num of files: " + filecount)

Проблема: почти каждый раз при запуске кода я получаю разное количество каталогов и файлов.

Вопрос: Не могли бы вы подсказать причину, по которой количество файлов и каталогов будет колебаться? Может быть, это особенность работы Linux?

Дополнительная информация: Просто хочу убедиться, что эта часть моего сценария очень важна для всей программы.

решение1

Работающая система Unix время от времени в процессе нормальной работы создает временные файлы и каталоги.

Простое открытие файла в редакторе или отправка электронного письма, скорее всего, создаст один или два временных файла, а просмотр веб-страниц может создать и удалить сотни файлов за короткий промежуток времени. Кроме того, графическая среда рабочего стола может выполнять кэширование и другие действия, которые вы обычно не замечаете, что создает и удаляет временные файлы.

В зависимости от того, какой у вас главный каталог, вы можете охватить каталоги, которые имеют тенденцию часто меняться, например, /tmpи все каталоги вложенные в /var, а также ваш домашний каталог.

решение2

dirs — это список имен каталогов в текущем (корневом) каталоге, а files — это список имен файлов в текущем каталоге.

Я думаю, вам хотелось бы чего-то вроде этого:

def traverse(top):
    filecount = 0
    dircount = 0
    for root, dirs, files in os.walk(top):
        dircount += len(dirs)
        filecount += len(files)
    print("Num of dir: " + dircount)
    print("Num of files: " + filecount)

Связанный контент