Pregunta

He escrito lo siguiente en TextWrangler:

directory = raw_input("See contents of: ") 

for root, dirs, files in os.walk(directory):
   print root, dirs, files

Por desgracia, cuando lo ejecuto en el terminal y asignar la ruta del directorio escribiendo o arrastrando una carpeta desde el muelle no pasa nada. Ni siquiera un mensaje de error. Por otro lado cuando entro en el siguiente en TextWrangler a continuación, ejecutar el programa en el terminal, funciona bien.

for root, dirs, files in os.walk("/Users/paulpatterson/Documents/Python"):
print root, dirs, files

Mi pregunta entonces, ¿por qué no aceptar os.walk una trayectoria en forma de una variable. El libro que estoy usando sugiere que debería, al igual que la mayoría de los ejemplos que he visto en la red al mismo tiempo tratando de resolver esto.

¿Fue útil?

Solución

Simplemente print directory antes del bucle para ver cuál es el camino que realmente conseguir. Ese es el problema, no es que no está aceptando os.walk variables.

Cuando se coloca una carpeta en OSX en el terminal:

  1. caracteres especiales como espacios consiguen escaparon para el uso en la cáscara
  2. se inserta un espacio después del nombre del directorio

Tanto evitará os.walk de encontrar el camino. Que no se obtiene un error es simple. os.walk no da un error para ese caso. Simplemente no lo hace iterar sobre el camino que no existe.

Otros consejos

Por desgracia, cuando lo ejecuto en terminal y asignar la ruta del directorio escribiendo o arrastrando una carpeta desde el muelle no pasa nada.

He intentado esto, como usted ha dicho, arrastrando la carpeta de mi terminal (estoy en Linux) y muestra el camino rodeado de comillas.

Eliminar las comillas después de su raw_input debe arreglar el problema

import os

directory = raw_input("See contents of: ")
directory = directory.strip()
if directory[0] == "'" and directory[-1] == "'":
    directory = directory[1:-1]

print directory

for root, dirs, files in os.walk(directory):
   print root, dirs, files
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top