目录
abspath
from os import listdir
from os.path import abspath, isfile
def show(path):
for item in listdir(path):
if '.idea' == item:
continue
if isfile(item):
continue
print(abspath(item))
for sub in listdir(item):
print(abspath(sub))
show('.')
abspath
的路径的计算居然是以程序运行的当前目录来计算的,或者说,它只是字符串拼接,并非从文件本身属性进行获取。
调整
from os import listdir
from os.path import abspath, isfile, join
def show(path):
for item in listdir(path):
if '.idea' == item:
continue
if isfile(item):
continue
print(abspath(item))
for sub in listdir(item):
print(abspath(join(item, sub)))
show('.')
如果是字符串拼接,那么需要自己首先拼接一遍。
也试过
chdir
,但是操作麻烦,也不一定得到预期效果,可以自己试试。
小结
因此,在递归的时候,不能够像java
或者其他语言一样直接进行目录的递归,因为python
中的abspath
只是字符串拼接。或者使用文件绑定的方式能够正常使用,但是abspath
是不可能给你递归子目录的。
如果需要使用,我们必须每次的去手动拼接,去补充完整中间缺失的路径。
from os import listdir
from os.path import abspath, isfile, join
def show(path):
for item in listdir(path):
if '.idea' == item:
continue
if isfile(item):
continue
item = abspath(join(path, item))
print(item)
for sub in listdir(item):
sub = join(item, sub)
print(sub)
show(sub)
show('.')