2010-12-15 3 views
0

Я написал следующее в TextWrangler:Почему os.walk не распознает мое имя переменной?

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 не принимает путь в виде переменной. Книга , которую я использую, предполагает, что она должна, как и большинство примеров, которые я видел в сети, пытаясь разобраться в этом.

ответ

2

Просто print directory перед циклом, чтобы узнать, какой путь вы действительно получите. В этом проблема, а не то, что os.walk не принимает переменные.

Когда вы удаляете папку под OSX в терминале:

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

Оба не позволит os.walk найти путь. То, что вы не получаете ошибку, прост. os.walk не дает ошибки для этого случая. Он просто не перебирает несуществующий путь.

+0

Спасибо, теперь работает. Сделал «каталог печати», но не заметил пробела в конце. – 2010-12-15 20:22:17

+0

+1 OP сказал: «Сейчас работает», мне действительно нужно знать, что это значит? – 2010-12-15 23:57:44

0

К сожалению, когда я запускаю его в терминале и укажите путь к каталогу путем ввода или перетащить папку с док ничего не происходит.

Я пробовал это, как вы сказали, перетаскивая папку на мой терминал (я нахожусь в 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 

 Смежные вопросы

  • Нет связанных вопросов^_^