Search for sub-directory python
我正试图自动化一个子目录的规范,这是我的一个脚本所需要的。其思想是让脚本在c:drive中搜索特定名称的文件夹。在我看来,这需要一个递归搜索函数。计划是检查所有子目录,如果没有所需的目录,则开始搜索当前子目录的子目录。
在研究如何做到这一点时,我遇到了这个问题,开始使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 |
如果需要的话,我可以提供我的代码,但我不想最初发布它来避免更大的文本墙。
我的问题是:为什么在搜索了几个文件夹之后脚本就放弃了?提前感谢您的帮助!
每当迭代器没有更多的值要生成时,就会引发
你为什么用
1 2 | for root, dirs, files in os.walk(mydir): #dirs here should be equivalent to dirList |
这是
对我有用的是在os.walk中指定完整路径,而不仅仅是目录名:
1 2 3 4 5 | # fullpath of the directory of interest with subfolders to be iterated (Mydir) fullpath = os.path.join(os.path.dirname(__file__),'Mydir') # iteration subfolders = os.walk(fullpath).next()[1] |
号
尤其是当包含os.walk的模块位于子文件夹本身,由父文件夹中的脚本导入时,我遇到了这种情况。
1 2 3 4 5 6 7 | Parent/ script Folder/ module Mydir/ Subfolder1 Subfolder2 |
在脚本中,os.walk("mydir")将查找不存在的parent/mydir。
另一方面,os.walk(fullpath)将在parent/folder/mydir中查找。