首頁 > 軟體

python尋找含有關鍵字檔案和刪除資料夾方式

2022-02-09 19:01:36

尋找含有關鍵字檔案和刪除資料夾

我們往往在操作檔案時,會不知道檔案具體的路徑。

一般如果只是處理一個檔案的話我們可以在檔案所在的資料夾下執行python指令碼,預設為當前指令碼。

而如果一個檔案有多層目錄結構時,往往這種方法很有侷限性。

例如在處理mesaage檔案時,先要解壓一個壓縮檔案,其中有兩個資料夾,而每個資料夾下的第四層目錄中都有一個message檔案,現在所要做的就是將每個message檔案讀入,然後進行分析。

若使用絕對路徑去讀入檔案無疑降低了程式碼的重用性,所以就寫了一個尋找關鍵字檔案的函數。(函數還有很多漏洞,但能解決燃眉之急了。)

#尋找關鍵字檔案 
def findfile(keyword,root): 
#keyword為關鍵字,root為資料夾路徑 
        filelist=[]   #存放每個檔案
        rfilelist=[]   #存放匹配檔案
        for root,dirs,files in os.walk(root):
                for name in files: 
                        filelist.append(os.path.join(root,name)) 
       #遍歷路徑檔案下的所有資料夾,將所有檔案放入filelist 
        for i in filelist:
                if os.path.isfile(i):
                        if keyword in os.path.basename(os.path.splitext(i)[0]):
                                rfilelist.append(i)
                        else:
                                pass
                else:
                        pass 
        return rfilelist

以上為簡單的關鍵字檔案查詢

有時候解壓出來的檔案會很多,而我們希望獲得了有用的資料後,將解壓出來的檔案再刪除掉,所以就有了刪除解壓檔案的函數。

在此處先要匯入shutil包

import shutil 
#filelist  為解壓出來的檔案列表 
def  delete_unzip(filelist):
        thfile=filelist
        for i in thfile:
                shutil.rmtree(os.path.splitext(i)[0])

python刪除一個檔案或資料夾

使用python刪除一個檔案或資料夾

需要使用os模組

import os
os.remove(path)  # path是檔案的路徑,如果這個路徑是一個資料夾,則會丟擲OSError的錯誤,這時需用用rmdir()來刪除
os.rmdir(path)  # path是資料夾路徑,注意資料夾需要時空的才能被刪除
os.unlink('F:新建文字檔案.txt')  # unlink的功能和remove一樣是刪除一個檔案,但是刪除一個刪除一個正在使用的檔案會報錯。
import os
path = 'F:/新建文字檔案.txt'  # 檔案路徑
if os.path.exists(path):  # 如果檔案存在
    # 刪除檔案,可使用以下兩種方法。
    os.remove(path)  
    #os.unlink(path)
else:
    print('no such file:%s'%my_file)  # 則返回檔案不存在
import os
os.removedirs(path)  # 遞迴地刪除目錄。如果子目錄成功被刪除,則將會成功刪除父目錄,子目錄沒成功刪除,將拋異常。
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))

另一種方法

import shutil
shutil.rmtree()

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com