Quiero navegar desde el directorio raíz a todos los demás directorios dentro e imprimir lo mismo.
Aquí está mi 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 ""
Y aquí está mi 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
Arriba, .
y ./packagedemo
son directorios.
Sin embargo, necesito imprimir el O / P de la siguiente manera:
A
---a.txt
---b.txt
---B
------c.out
Arriba, A
y B
son directorios y el resto son archivos.
Respuestas:
Esto te dará el resultado deseado
fuente
os.walk(u".")
porque las rutas pueden ser Unicode.os.path.curdir
os.path.walk
durante un tiempo, ¡así queos.walk
es nuevo para mí! Frijoles fríos.basepath
equivale en su código?prueba esto:
obtendrás esto:
fuente
print(FileTreeMaker().make(args),file=tree)
pero me da'charmap' codec can't encode characters in position 17-21: character maps to <undefined>
os.listdir()
también. El tuyo es mucho mejor; No pude entender bien la recursión, solo funcionó con 2 o 3 capas de profundidad. Al final decidí volver a intentarlo desde ceroos.walk()
, lo que pensé que sería mucho más adecuado. Me sorprende que no lo hayas usado aquí.Hay funciones más adecuadas para esto en el
os
paquete. Pero si tienes que usaros.walk
, esto es lo que se me ocurresalida:
fuente
os.listdir
pero la solución de @ ajay supera eso.Puede usar
os.walk
, y esa es probablemente la solución más fácil, pero aquí hay otra idea para explorar:Puede reconocer la siguiente documentación del comando TREE en el terminal de Windows:
fuente
Recorrido recursivo a través de un directorio donde obtienes TODOS los archivos de todos los directorios del directorio actual y obtienes TODOS los directorios del directorio actual, porque los códigos anteriores no tienen simplicidad (en mi humilde opinión):
fuente
os.path.join(root, filename)
proporciona la ruta completa al archivo, incluso si el archivo está anidado en varios directorios.Esto lo hace para los nombres de carpetas:
fuente
fuente
Dado un nombre de carpeta, recorre toda su jerarquía de forma recursiva.
fuente
Seria la mejor manera
fuente
dir + d
, lo que podría concat sin separador de directorio. Probablemente sea mejor usaros.path.join
para concatenar directorios con nombres de archivosIntenta esto; fácil
======== SALIDA a continuación ========
fuente
Prueba esto:
Aquí estoy asumiendo tu camino como "." en el que el directorio raíz y otros directorios están ahí. Entonces, básicamente, solo estamos iterando en todo el árbol usando la llamada next (), ya que nuestro os.walk es solo una función generativa. Al hacer esto, podemos guardar todos los nombres de Directorio y de archivo en dir_names y file_names respectivamente.
fuente
También puede recorrer recursivamente una carpeta y enumerar todos sus contenidos usando pathlib.Path ()
Salida:
fuente
fuente