[英]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.