我正在嘗試使用 Python 3 創(chuàng)建一個(gè)函數(shù)來(lái)刪除指定目錄中的空目錄。不幸的是,我的嘗試沒(méi)有成功,所以我非常感謝任何幫助、指導(dǎo)和建議。我試圖讓該函數(shù)執(zhí)行的操作的示例:前...-folder/ |-empty1/ |-empty2/ |-not_empty1/ |-file |-not_empty2/ |-file后...-folder/ |-not_empty1/ |-file |-not_empty2/ |-file這是我確信會(huì)起作用但沒(méi)有起作用的:# folder - absolute path to directory that may contain empty directoriesdef cleanup(folder): from os import listdir, rmdir, path ls = listdir(folder) ls = map(lambda f: path.join(folder, f), ls) folders = filter(lambda f: path.isdir(f), ls) map(lambda x: rmdir(x), folders)謝謝!編輯:刪除了第一個(gè)映射末尾的額外括號(hào),用于使用語(yǔ)句list(map(...))進(jìn)行調(diào)試print已移至path.join()上方行path.isdir()將問(wèn)題的標(biāo)題從“...FP 風(fēng)格的 Python 3”更改為,因?yàn)檎缭u(píng)論中指出的那樣,這不是 FP 的正確實(shí)現(xiàn)和應(yīng)用。
1 回答

子衿沉夜
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
os.rmdir只刪除空目錄,因此在正確且最小的實(shí)現(xiàn)中,在功能風(fēng)格中沒(méi)有什么可做的:
import errno
import os
def cleanup(folder):
for name in os.listdir(folder):
try:
os.rmdir(os.path.join(folder, name))
except OSError as e:
if e.errno != errno.ENOTEMPTY:
raise
添加回答
舉報(bào)
0/150
提交
取消