簡體   English   中英

根據文件名中的日期刪除文件

[英]Deleting files based on day within filename

I have a directory with files like: data_Mon_15-8-22.csv , data_Tue_16-8-22.csv , data_Mon_22-8-22.csv etc and I am trying to delete all but the Monday files. 但是,我的腳本似乎沒有區分文件名,盡管我聲明了它,但它只是刪除了所有內容。 我在哪里 go 錯了? 任何幫助將非常感激!

我的代碼:

def file_delete():
    directory = pathlib.Path('/Path/To/Data')
    for file in directory.glob('data_*.csv'):
        if file != 'data_Mon_*.csv':
            os.remove(file)]

如果所有星期一文件都以“data_Mon_”開頭,那么您可以使用 str.startswith:

def file_delete():
    directory = pathlib.Path('/Path/To/Data')
    for file in directory.glob('data_*.csv'):
        if not file.name.startswith('data_Mon_'):
            os.remove(file)
if file != 'data_Mon_*.csv'

這里有兩個問題:

file與字符串'data_Mon_*.csv'進行比較。 由於file不是字符串,因此這兩個對象永遠不會相等。 所以if條件永遠為真。 要解決此問題,您需要獲取文件名,而不是直接使用文件 object。

即使您解決了這個問題,字符串'data_Mon_*.csv'也是文字。 換句話說, *是一個* directory.glob('data_*.csv')不同,這只會匹配*而不是匹配 glob 表達式中的“任何內容”。 為了解決這個問題,您需要使用正則表達式來匹配您的文件名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM