Question

J'ai écrit ce qui suit dans TextWrangler:

directory = raw_input("See contents of: ") 

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

Malheureusement, quand je le lance dans le terminal et définir le chemin du répertoire en tapant ou en faisant glisser un dossier dans le dock rien ne se passe. Pas même un message d'erreur. D'autre part, quand je saisissez dans TextWrangler puis exécutez le programme dans le Terminal, il fonctionne très bien.

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

Ma question alors, pourquoi est os.walk ne pas accepter un chemin sous la forme d'une variable. Le livre que j'utilise suggère qu'il devrait, comme la plupart des exemples que je l'ai vu sur le net tout en essayant de trier cela.

Était-ce utile?

La solution

Il suffit print directory avant que la boucle pour voir quel chemin vous avez vraiment. C'est le problème, pas os.walk n'accepte pas les variables.

Lorsque vous déposez un dossier sous Mac OS X dans le terminal:

  1. caractères spéciaux tels que les espaces se sont échappés pour une utilisation dans le shell
  2. un espace est inséré après le nom du répertoire

Les deux empêchera os.walk de trouver le chemin. Que vous ne recevez pas une erreur est simple. os.walk ne donne pas une erreur pour ce cas. Il ne parcourons simplement sur le chemin non existant.

Autres conseils

  

Malheureusement, quand je le lance dans   terminal et affecter le chemin du répertoire   en saisissant ou en faisant glisser un dossier de   rien de dock arrive.

J'ai essayé par, comme vous avez dit, en faisant glisser le dossier à mon terminal (je suis sous Linux) et il affiche le chemin entouré de guillemets.

Retirez les guillemets après votre raw_input devrait résoudre votre problème

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top