Re: [問題] 如何取得os.listdir()結果的絕對路徑
※ 引述《Holocaust123 (奔跑的蝸牛)》之銘言:
: #coding=utf8
: # 如下所見, cache_folders 這個 list 的 element 皆為資料夾路徑.
: # 這些路徑的檔案分隔符號頗亂, 有些用/, 有些用\, 有些用//, 有些用\\,
: # 且多半有混用的情況
: cache_folders = \
: [
: 'C:\\Documents and Settings\\user\\Local Settings\\Application Data\\Mozilla\\Firefox\\Profiles\\uxkeooir.lite\\Cache',
: 'C:\\Documents and Settings\\user/Local Settings/Application Data/K-Meleon\\aqu123v4.default\\Cache',
: u'C:\\Documents and Settings\\user/Local Settings/Temporary Internet Files/',
: ur'D:/測試檔 output 備份/',
: #...過多, 故省略
: ]
: # 現在, 我想把cache_folders中的每個資料夾中的檔案通通刪掉:
: for folder in cache_folders:
: for f in os.listdir(folder):
: if(os.path.isfile(f)): # 檔案可能是file
: os.remove(f)
: else: # 也可能是directory
: shutil.rmtree(f)
: ---
: 但f畢竟不是檔案路徑 要先取得路徑才能刪除
: 我想過幾個方法:
: 1) 把 f 的路徑 append 在folder的路徑後面
: for folder in cache_folders:
: for f in os.listdir(folder):
: folder = refine(folder) #refine是另外寫的函式, 目的是把folder改成以"/"結尾
: f = folder + f
: if(os.path.isfile(f)): # 檔案可能是file
: os.remove(f)
: else: # 也可能是directory
: shutil.rmtree(f)
: 2) 移到folder路徑後再刪除底下的檔案
: for folder in cache_folders:
: for f in os.listdir(folder):
: os.chdir(folder)
: if(os.path.isfile(f)): # 檔案可能是file
: os.remove(f)
: else: # 也可能是directory
: shutil.rmtree(f)
: 我想請教的是:
: a. 有沒有辦法透過Python內建函式直接取得某資料夾內所有檔案的絕對路徑?
: 我的意思大概是這樣:
: for folder in cache_folders
: for f in list_abspath(folder): #有list_abspath這種函式嗎?
: if(os.path.isfile(f)): # 檔案可能是file
: os.remove(f)
: else: # 也可能是directory
: shutil.rmtree(f)
: b. 除了上述幾種方法, 還有什麼推薦的刪檔案方法嗎?
從 a 問題來看,os.walk 可能是比較接近你想要的 functionality。
但是從你要完成的任務來看,你並不需要(recursively)列舉一個 directory 內的
所有 files/directories,你只要列舉直接位於 cache_folders 內任一個
directory 下的 files/directories 來刪除即可。
for folder in map(refine, cache_folders):
for f in map(lambda x: os.path.join(folder, x), os.listdir(folder)):
if os.path.isfile(f): os.remove(f)
else: shutil.rmtree(f)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.250.104
推
11/10 01:47, , 1F
11/10 01:47, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章