目錄
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('.')