スクリプトの 1 つが必要とするサブディレクトリの指定を自動化しようとしています。アイデアは、スクリプトで C: ドライブを検索して、特定の名前のフォルダーを探すことです。私の考えでは、これには再帰的な検索機能が必要です。計画は、すべてのサブディレクトリをチェックすることです。目的のディレクトリがない場合は、現在のサブディレクトリのサブディレクトリの検索を開始します
これを行う方法を調査しているときに、この質問に出くわし、os.walk(dir).next()[1]
ディレクトリを一覧表示するために使用し始めました。これは限られた成功しか収めませんでした。スクリプトがディレクトリを検索すると、基本的にあきらめて中断し、StopIteration
エラーが発生します。内のサブディレクトリを検索する出力例を以下に示しますTEST1
。
C:\Python27>test.py
curDir: C:\Python27
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'pyinstaller-2.0', 'Scripts', 'tcl', 'TEST1', 'Tools']
curDir: DLLs
[]
curDir: Doc
[]
curDir: include
[]
curDir: Lib
['bsddb', 'compiler', 'ctypes', 'curses', 'distutils', 'email', 'encodings', 'hotshot',
'idlelib', 'importlib', 'json', 'lib-tk', 'lib2to3', 'logging', 'msilib',
'multiprocessing', 'pydoc_data', 'site-packages', 'sqlite3', 'test', 'unittest', 'wsgiref', 'xml']
curDir: bsddb
Traceback (most recent call last):
File "C:\Python27\test.py", line 24, in <module>
if __name__ == "__main__": main()
File "C:\Python27\test.py", line 21, in main
path = searcher(os.getcwd())
File "C:\Python27\test.py", line 17, in searcher
path = searcher(entry)
File "C:\Python27\test.py", line 17, in searcher
path = searcher(entry)
File "C:\Python27\test.py", line 6, in searcher
dirList = os.walk(dir).next()[1]
StopIteration
curDir
検索されている現在のディレクトリであり、出力の次の行はサブディレクトリのリストです。プログラムがサブディレクトリのないディレクトリを見つけると、1 レベル上に戻り、次のディレクトリに移動します。
必要に応じてコードを提供できますが、テキストの壁がさらに大きくなるのを避けるために、最初はコードを投稿したくありませんでした。
私の質問は、いくつかのフォルダーを検索した後にスクリプトがあきらめるのはなぜですか? よろしくお願いします。