Flutuante número de arquivos e diretórios [fechados]

0

Situação: Eu tenho um script Python que recursivamente e separadamente conta 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 toda vez que executo o código.

Pergunta: Mente sugerindo uma razão pela qual o número de arquivos e diretórios irá flutuar? Talvez seja assim que o Linux opera?

Informações adicionais: só quero ter certeza de que essa parte do meu script é muito importante para todo o programa

    
por Timothy Wong 22.05.2017 / 08:28

2 respostas

2

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 a navegação na Web poderá criar e excluir centenas de arquivos em um curto período 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 do seu diretório principal, você pode abranger diretórios que tendem a mudar bastante, como /tmp e todos os diretórios em /var , e seu diretório pessoal.

    
por 22.05.2017 / 09:26
1

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.

Eu 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)
    
por 22.05.2017 / 09:14