Eu quero navegar do diretório raiz para todos os outros diretórios dentro e imprimir o mesmo.
Aqui está o meu código:
#!/usr/bin/python
import os
import fnmatch
for root, dir, files in os.walk("."):
print root
print ""
for items in fnmatch.filter(files, "*"):
print "..." + items
print ""
E aqui está o meu O / P:
.
...Python_Notes
...pypy.py
...pypy.py.save
...classdemo.py
....goutputstream-J9ZUXW
...latest.py
...pack.py
...classdemo.pyc
...Python_Notes~
...module-demo.py
...filetype.py
./packagedemo
...classdemo.py
...__init__.pyc
...__init__.py
...classdemo.pyc
Acima, .
e ./packagedemo
são diretórios.
No entanto, preciso imprimir o O / P da seguinte maneira:
A
---a.txt
---b.txt
---B
------c.out
Acima, A
e B
são diretórios e o restante são arquivos.
Respostas:
Isso lhe dará o resultado desejado
fonte
os.walk(u".")
porque os caminhos podem ser Unicode.os.path.curdir
os.path.walk
por um tempo, entãoos.walk
é novo para mim! Feijão fresco.basepath
igual no seu código?tente isto:
você receberá isto:
fonte
print(FileTreeMaker().make(args),file=tree)
mas dá-me'charmap' codec can't encode characters in position 17-21: character maps to <undefined>
os.listdir()
. O seu é muito melhor; Não consegui acertar a recursão, apenas funcionou com 2 ou 3 camadas de profundidade. No final, decidi tentar novamente do zeroos.walk()
, o que achei muito mais adequado. Estou surpreso que você não tenha usado nada aqui.Existem funções mais adequadas para isso no
os
pacote. Mas se você tiver que usaros.walk
, aqui está o que eu proponhoresultado:
fonte
os.listdir
mas a solução da @ ajay supera isso.Você pode usar
os.walk
, e essa é provavelmente a solução mais fácil, mas aqui está outra idéia para explorar:Você pode reconhecer a seguinte documentação do comando TREE no terminal do Windows:
fonte
Percurso recursivo por um diretório em que você obtém TODOS os arquivos de todos os diretórios do diretório atual e obtém TODOS os diretórios do diretório atual - porque os códigos acima não têm uma simplicidade (imho):
fonte
os.path.join(root, filename)
fornece o caminho completo para o arquivo, mesmo se o arquivo estiver aninhado em vários diretórios.Faz isso para nomes de pastas:
fonte
fonte
Dado o nome de uma pasta, percorra toda a sua hierarquia recursivamente.
fonte
Seria a melhor maneira
fonte
dir + d
, o que pode concatená-los sem separador de diretório. Provavelmente é melhor usaros.path.join
para concatir diretórios com nomes de arquivosTente isso; Facil
======== SAÍDA abaixo ========
fonte
Tente o seguinte:
Aqui estou assumindo o seu caminho como "." no qual o root_file e outros diretórios estão lá. Portanto, basicamente estamos iterando por toda a árvore usando a chamada next (), pois nosso os.walk é apenas uma função generativa. Ao fazer isso, podemos salvar todos os nomes de diretório e arquivos em dir_names e file_names, respectivamente.
fonte
Você também pode percorrer recursivamente uma pasta e lista todo o seu conteúdo usando pathlib.Path ()
Resultado:
fonte
fonte