2011-07-15 9 views
0

私はディレクトリリストに問題があります。私はいくつかのサブディレクトリ(a-z、0-9、%、 - という名前のディレクトリ)を持っています。各サブディレクトリには、関連するxmlファイルがあります。 私はこのファイルの各行を読む必要があります。次のコードを試しました。Pythonのディレクトリリスト

​​3210

それは私がサブディレクトリから私のプログラムを実行しようとした場合にのみ動作しますが、私はメインのディレクトリから実行しようとした結果なし場合。ここで何がうまくいかないの? どんな種類の助力でも大歓迎です。ありがとう!

+1

(タブの代わりに4つのスペースを使用して使用していない) –

答えて

2

これはどう:

def list_files(dirpath): 
    files = [] 
    for dirname, dirnames, filenames in os.walk(dirpath): 
     files += [os.path.join(dirname, filename) for filename in filenames] 
    return files 

リストはその全体に格納されていないので、あなたはまた、発電としてこれを行うことができます:

def list_files(dirpath): 
    for dirname, dirnames, filenames in os.walk(dirpath): 
     for filename in filenames: 
      yield os.path.join(dirname, filename) 

最後に、絶対パスを適用することができます。

def list_files(dirpath): 
    dirpath = os.path.abspath(dirpath) 
    for dirname, dirnames, filenames in os.walk(dirpath): 
     for filename in filenames: 
      yield os.path.join(dirname, filename) 

これらのすべては次のような行を呼び出すことができます。

for filePath in list_files(dirpath): 
    # Check that the file is an XML file. 
    # Then handle the file. 
+0

おかげで多くのことをあなたのインデントを修正してください!!! ....... – Liza

1

サブディレクトリがソフトリンクの場合は、os.walk(..)の引数としてfollowlinks=Trueを指定してください。ドキュメントから:

By default, os.walk does not follow symbolic links to subdirectories on 
    systems that support them. In order to get this functionality, set the 
    optional argument 'followlinks' to true. 
関連する問題