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の下のフォルダーを端末にドロップするとき:
- シェルでの使用のためにスペースのような特別なcharが逃げられます
- ディレクトリ名の後にスペースが挿入されます
どちらも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
所属していません StackOverflow