为了账号安全,请及时绑定邮箱和手机立即绑定

为什么os.path.isdir() 在判断第二层文件夹的时候返回false?

为什么os.path.isdir() 在判断第二层文件夹的时候返回false?

汪汪一只猫 2019-05-23 18:31:03
代码如下,文件夹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个赞

首先给楼上的回答点了个赞,回答得非常好。
这是我修改后的代码:
importos
defsearch(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)
使用内置函数是最简便的方法。
                            
查看完整回答
反对 回复 2019-05-23
  • 2 回答
  • 0 关注
  • 695 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信