2012-05-05 11 views
0

私は再帰的なファイルリストプログラムをPythonで書こうとしています。 最後にコードをキャッチする例外なしでプログラムを実行すると、エラー番号5、 が返され、一部のWindowsフォルダへのアクセスが拒否されたことを示します。私は管理者権限とすべてを持っていますが、それでも私はこのエラーを投げかけています。 これを回避して、それらのディレクトリにあるファイルを一覧表示することは可能ですか?エラーNo.5フォルダを再帰的に検索しようとしています

import os 

def wrapperList(): 
    mainList = [] 
    fileList = os.listdir("C:") 
    for file in fileList: 
     path = os.path.join("C:\\", file) 
     if (os.path.isdir(path)): 
      mainList.append(recurList(path)) 
     else: 
      mainList.append(path) 
    print mainList 
def recurList(directory): 
    try: 
     fileList = os.listdir(directory) 
     tempList = [] 
     for file in fileList: 
      path = os.path.join(directory, file) 
      if (os.path.isdir(file)): 
       tempList.append(recurList(path)) 
      else: 
       tempList.append(file) 
     return tempList 
    except: 
     return ["Access Denied"] 

wrapperList() 
+2

あなたのコードにリンクしたり、投稿したり、例外を投稿したりしないでください。編集:コードをあなたの投稿に入れて修正しましたが、例外を追加する必要があります。 –

答えて

3

これは、あなたが同じことを自分で実装しようとよりos.walkを使用してオフにずっと良いだろう例です。

例えば:エラーについては

import os 

for root, dirs, files in os.walk("/some/path"): 
    ... 

あなたが拒否された権限を取得している場合、それはあなたが本当にそこにアクセスを拒否していることはおそらくです。私はWindowsユーザーではないので、わかりませんが、管理者権限でプログラムを実行する必要がありますか? (rootで実行するのと同等、またはlinuxではsudo)。

+0

私はWindowsに管理者のコマンドプロンプトがあることを知っています。私はそれが彼がそれをどのように打ち上げているかに依存すると思う。私はまた、グラフィカルに起動するためのRun As Adminの右クリックオプションがあることを覚えています。窓を持つ、誰が知っている。 – jdi

+0

間違いなく、「os.walk」は道のりであり、「車輪を再発明しない」というのがその最善の理由です。 +1 – heltonbiker

関連する問題