2011-02-07 9 views

答えて

16

os.listdir()またはos.walk()で、再帰的に実行するかどうかによって異なります。

import os.path 
def print_it(x, dir_name, files): 
    print dir_name 
    print files 

os.path.walk(your_dir, print_it, 0) 

注:

6

あなたのような何かを試すことができos.path.walkの第三引数はあなたが好きです。あなたは、コールバックの第一引数としてそれを取得します

+0

これが原因 'os'は' PATH'を処理する方法に機能しますが、あなたは* *常に明示的に 'os.path'をインポートする必要があります。 –

+0

固定!このコメントをありがとう。 – luc

+1

@Ignacio Vazquez-Abrams: 'os'はモジュールです(パッケージではありません)。 'import os'はPython 2.4-3.2、jython、pypyで動作します。なぜあなたは 'os.path'をインポートする必要がありますか? – jfs

2

あなたはglobを試みることができる:(私の知る限り)

import glob 

for file in glob.glob('log-*-*.txt'): 
    # Etc. 

しかしglobは、再帰的に動作しませんので、あなたのログは、フォルダ内にある場合そのディレクトリの中で、あなたは何を見て良いでしょうIgnacio Vazquez-Abramsが投稿されました。

3
import os 
# location of directory you want to scan 
loc = '/home/sahil/Documents' 
# global dictonary element used to store all results 
global k1 
k1 = {} 

# scan function recursively scans through all the diretories in loc and return a dictonary 
def scan(element,loc): 

    le = len(element) 

    for i in range(le): 
     try: 

      second_list = os.listdir(loc+'/'+element[i]) 
      temp = loc+'/'+element[i] 
      print "....." 
      print "Directory %s " %(temp) 
      print " " 
      print second_list 
      k1[temp] = second_list 
      scan(second_list,temp) 

     except OSError: 
      pass 

    return k1 # return the dictonary element  


# initial steps 
try: 
    initial_list = os.listdir(loc) 
    print initial_list 
except OSError: 
    print "error" 


k =scan(initial_list,loc) 
print " ..................................................................................." 
print k 

私は私のオーディオプレーヤーのプレイリスト機能を作るために、ディレクトリスキャナとしてこのコードを作り、それが再帰的にディレクトリに存在するすべてのサブディレクトリをスキャンします。

+0

FYI:コードスペースを4つインデントするか、 '{} 'ボタンを使用してください - 詳細はhttp://stackoverflow.com/editing-helpを参照してください – McDowell

1

あなたはグロブは、リスト内のファイルの順序を気にしません

glob.glob("*.jpg") + glob.glob("*.png") 

を使用し、複数のファイルタイプをチェックする必要がある場合。あなたはファイル名でソートされたファイルが必要な場合は、あなたが再帰的にこのようなディレクトリからすべてのファイルを一覧表示することができます

sorted(glob.glob("*.jpg")) 
2

を使用しています。

from os import listdir 
from os.path import isfile, join, isdir 

def getAllFilesRecursive(root): 
    files = [ join(root,f) for f in listdir(root) if isfile(join(root,f))] 
    dirs = [ d for d in listdir(root) if isdir(join(root,d))] 
    for d in dirs: 
     files_in_d = getAllFilesRecursive(join(root,d)) 
     if files_in_d: 
      for f in files_in_d: 
       files.append(join(root,f)) 
    return files 
2
import os 
rootDir = '.' 
for dirName, subdirList, fileList in os.walk(rootDir): 
    print('Found directory: %s' % dirName) 
    for fname in fileList: 
     print('\t%s' % fname) 
    # Remove the first entry in the list of sub-directories 
    # if there are any sub-directories present 
    if len(subdirList) > 0: 
     del subdirList[0] 

関連する問題