Número flutuante de arquivos e diretórios

Número flutuante de arquivos e diretórios

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 /tmptodos os diretórios em /vare 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)

informação relacionada