情况:我有一个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)