代码如下,文件夹A包含文件夹B,B包含文件夹C,循环的时候isdir(B)返回的是True,再循环的时候isdir(C)就返回False了,不对C下面的文件查找了。这是为什么?importosdefsearch(directory):print(directory)forxindirectory:ifos.path.isdir(x):search(os.listdir(os.path.join(os.getcwd(),x)))if'.'inos.path.basename(x):print(os.path.basename(x))search(os.listdir('.'))
2 回答
互换的青春
TA贡献1797条经验 获得超6个赞
首先给楼上的回答点了个赞,回答得非常好。这是我修改后的代码:importosdefsearch(directory):print(directory)forxindirectory:ifos.path.isdir(x):os.chdir(x)#进入到新目录search(os.listdir('.'))os.chdir(os.path.abspath('..'))#退出到父目录if'.'inos.path.basename(x):print(os.path.basename(x))search(os.listdir('.'))在Python3.6.3中运行结果是没有问题的!另外,强烈建议使用内置函数进行目录遍历。foriinos.walk('.'):print(i)使用内置函数是最简便的方法。
添加回答
举报
0/150
提交
取消