1

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 が変数の形でパスを受け入れないのかということです。私が使用している本は、これを整理しようとしているときにネットで見たほとんどの例と同様に、そうすべきだと示唆しています。

4

2 に答える 2

2

ループprint directoryの直前に、実際に取得するパスを確認します。それが問題であり、os.walk変数を受け入れないということではありません。

OSX の下のフォルダーをターミナルにドロップすると、次のようになります。

  1. スペースなどの特殊文字は、シェルで使用するためにエスケープされます
  2. ディレクトリ名の後にスペースが挿入されます

どちらも os.walk がパスを見つけるのを妨げます。エラーが発生しないことは簡単です。その場合、os.walk はエラーになりません。存在しないパスを反復しません。

于 2010-12-15T19:53:42.683 に答える
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
于 2010-12-15T19:57:08.340 に答える