Вопрос

Я написал следующее в 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 в терминал:

  1. Специальные чарки, такие как пространства, сбегают для использования в оболочке
  2. Пространство вставлено после имени каталога

Оба предотвращают поиск пути 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top