Почему OS.Walk не распознает мое имя переменной?
-
10-10-2019 - |
Вопрос
Я написал следующее в Textwrangler:
directory = raw_input("See contents of: ")
for root, dirs, files in os.walk(directory):
print root, dirs, files
К сожалению, когда я запускаю его в терминале и назначаю путь каталога, вводя или перетаскивая папку из док -станции, ничего не происходит. Даже сообщение об ошибке. С другой стороны, когда я ввожу следующее в Textwrangler, затем запускаю программу в терминале, она работает нормально.
for root, dirs, files in os.walk("/Users/paulpatterson/Documents/Python"):
print root, dirs, files
Мой вопрос тогда, почему OS.Walk не принимает путь в форме переменной. Книга, которую я использую, предполагает, что это должна, как и большинство примеров, которые я видел в сети, пытаясь разобраться в этом.
Решение
Просто print directory
Перед петшей, чтобы увидеть, какой путь вы действительно пойдете. Вот проблема, не в чем os.walk
не принимает переменные.
Когда вы бросаете папку под OSX в терминал:
- Специальные чарки, такие как пространства, сбегают для использования в оболочке
- Пространство вставлено после имени каталога
Оба предотвращают поиск пути OS.Walk. То, что вы не получите ошибку, просто. Os.Walk не дает ошибки для этого случая. Это просто не перечитывает по не существующему пути.
Другие советы
К сожалению, когда я запускаю его в терминале и назначаю путь каталога, вводя или перетаскивая папку из док -станции, ничего не происходит.
Я попробовал это, как вы сказали, перетаскивая папку в мой терминал (я на Linux), и он отображает путь, окруженный цитатами.
Удалите цитаты после вашего raw_input
должен решить вашу проблему
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