Intereting Posts
Как я могу создать новые команды оболочки? Разница между .xinitrc, .xsession и .xsessionrc FreeBSD – нет доступа к Интернету внутри тюрьмы Корневой каталог по умолчанию rsnapshot кажется неправильным Как я могу использовать функции автозаполнения bash и шаблоны фильтров вместе? Сохранить содержимое буфера обмена, когда программы из текста из скопированных выходов Пароль root не работает для входа в Gnome с помощью gdm Сделать Trickle получить правильную $ PATH Временно используйте что-то еще в качестве домашней директории Базовая ОС для беспроводной передачи и приема apt-get возвращает странную ошибку Как я могу вручную скопировать автоматическую систему полного шифрования Manjaro Setup? Как вызывать привилегии root из моего пользовательского приложения? alsamixer / pulseaudio выберите внутренний микрофонный микрофонный разъем Где скачать бинарные файлы coreutils?

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

Ситуация: у меня есть сценарий 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?

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

Запустившаяся система Unix будет создавать временные файлы и каталоги каждый раз в то время, когда будет работать в обычном режиме.

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

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

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

Я думаю, вам нужно что-то большее:

 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)