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