python-abspath小坑

目录

在这里插入图片描述

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('.')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章