
Situação: tenho um script Python que contará recursiva e separadamente o número total de arquivos e diretórios. Abaixo está o código:
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)
Problema: recebo um número diferente de diretórios e arquivos quase sempre que executo o código.
Pergunta: Importa-se de sugerir uma razão pela qual o número de arquivos e diretórios irá flutuar? Talvez seja assim que o Linux funciona?
Informações Adicionais: Só quero ter certeza de que esta parte do meu script é muito importante para todo o programa
Responder1
Um sistema Unix em execução criará arquivos e diretórios temporários de vez em quando durante a operação normal.
Apenas abrir um arquivo em um editor ou enviar um e-mail provavelmente criará um ou dois arquivos temporários, e navegar na web pode criar e excluir centenas de arquivos em um curto espaço de tempo. Além disso, um ambiente gráfico de área de trabalho pode fazer cache e outras coisas que você normalmente não percebe, o que cria e exclui arquivos temporários.
Dependendo de qual é o seu diretório principal, você pode cobrir diretórios que tendem a mudar muito, como /tmp
todos os diretórios em /var
e seu diretório inicial.
Responder2
dirs é uma lista de nomes de diretórios no diretório atual (raiz) e arquivos é uma lista de nomes de arquivos no diretório atual.
Acho que você quer algo mais assim:
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)