web-dev-qa-db-ja.com

ディレクトリのみを表示するには、os.listdirを使用します

os.listdirを介してリストするディレクトリを指定しながら、raw_inputを介して出力ディレクトリのみにpythonをもたらすにはどうすればよいですか?

私が持っているもの:

file_to_search = raw_input("which file to search?\n>")

dirlist=[]

for filename in os.listdir(file_to_search):
    if os.path.isdir(filename) == True:
        dirlist.append(filename)

print dirlist

現在の作業ディレクトリを(raw_input経由で)入力すると、これは実際に機能します。ただし、他に何かを入力すると、リストは空になります。私はこの問題を分割統治しようとしましたが、個々にすべてのコード部分が意図したとおりに機能します。

6
Felix

os.listdirはファイル/ディレクトリのnamesのみを返すため、現在のディレクトリで実行していない限り、オブジェクトは見つかりません。

それが機能するためのフルパスを計算するには、スキャンしたディレクトリにjoinする必要があります。

for filename in os.listdir(file_to_search):
    if os.path.isdir(os.path.join(file_to_search,filename)):
        dirlist.append(filename)

リスト内包バージョンに注意してください。

dirlist = [filename for filename in os.listdir(file_to_search) if os.path.isdir(os.path.join(file_to_search,filename))]
11