質問

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. シェルでの使用のためにスペースのような特別なcharが逃げられます
  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