Почему os.walk не распознает мою переменную? - PullRequest
0 голосов
/ 15 декабря 2010

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

Ответы [ 2 ]

2 голосов
/ 15 декабря 2010

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

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

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

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

0 голосов
/ 15 декабря 2010

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

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