我试图进行nagios检查以计算任何子目录名称中的文件数量"失败"在给定目录下,然后检查max_files阈值。这有点像在bash中做for i in `find . -type d -name failed`; do echo $; ls |wc -l $i; done
之类的事情。 (试图学习更多的Python,而不是回到bash。是的,这个命令可能不像写的那样工作,只是出于说明的原因而发布。)
我拼凑了这个方法,它实际上做了我想要的,但我似乎无法摆脱它产生的所有冗余输出。我试过重新订购for循环,但无济于事。所以我显然错过了一些非常简单的东西。
import os, fnmatch
def count_files_in_subd():
for root, dirs, files in os.walk("."):
print "{} in {}".format(len(files), root)
for dirname in fnmatch.filter(dirs, 'failed'):
print "{} in {}".format(len(files), root)
count_files_in_subd()
在我开始将文件计数与阈值进行比较之前,这就是所有这些,但我仍然坚持这一部分并且似乎无法摆脱继续所需的思维。
答案 0 :(得分:0)
from os import listdir
def count_files_in_subd(path):
files = listdir(path)
if 'failed' in files:
failed_files = listdir(path + 'failed/')
else:
print("There is no failed directory.")
return
print("There are {} files in the directory {}".format(len(failed_files), path))
listdir(path)
返回路径中所有文件的列表。使用listdir(path)
获取len()
的长度将返回列表中的对象数。
或者,这对夫妇简化为:
print("{}: {}".format(path + 'failed/', len(listdir(path)))