Perché non è os.walk riconoscere il mio nome di variabile?
-
10-10-2019 - |
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.
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:
- caratteri speciali come gli spazi vengono fuggiti per l'utilizzo nel guscio
- 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