Domanda

ho scritto quanto segue in TextWrangler:

directory = raw_input("See contents of: ") 

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

Purtroppo, quando l'eseguo in terminale e assegnare il percorso della directory digitando o trascinando una cartella dal molo non succede nulla. Nemmeno un messaggio di errore. D'altra parte quando entro quanto segue in TextWrangler quindi eseguire il programma nel terminale, funziona benissimo.

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

La mia domanda allora, perché è os.walk non accettare un percorso in forma di una variabile. Il libro che sto usando suggerisce che dovrebbe, come la maggior parte degli esempi che ho visto in rete mentre sta cercando di risolvere la questione.

È stato utile?

Soluzione

È sufficiente print directory prima del ciclo per vedere quale strada hai davvero. Questo è il problema, non è che os.walk non accetta le variabili.

Quando si rilascia una cartella sotto OSX nel terminale:

  1. caratteri speciali come gli spazi vengono fuggiti per l'utilizzo nel guscio
  2. uno spazio viene inserito dopo il nome della directory

Sia impedirà os.walk di trovare il percorso. Che non si ottiene un errore è semplice. os.walk non dà un errore per questo caso. Essa non si limita a scorrere i percorso non esistente.

Altri suggerimenti

Purtroppo, quando l'eseguo in terminale e assegnare il percorso di directory digitando o trascinando una cartella in da il dock non succede nulla.

Ho provato questo, come hai detto, trascinando la cartella al mio terminale (io sono su Linux) e visualizza il percorso circondato con le citazioni.

Rimuovi le virgolette dopo vostro raw_input dovrebbe risolvere il 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top