python實現按日期歸檔文件
在工作過程中,data目錄會一直接收文件,收到的文件放到一個大目錄裡不好判斷是否漏收,也不利於檢索;
所以寫瞭個腳本,每天早上九點用Windows計劃執行,將昨日這個文件夾內收到的文件全部歸檔,歸檔文件夾的名字就是昨天的日期,腳本及解釋如下:
import os import datetime import shutil # get file name def get_datetime(i): d = str((datetime.datetime.now() - datetime.timedelta(days=i)).date()).split("-") timeoffile = d[0] + d[1] + d[2] return(timeoffile) # new file def get_newfile(i): filename = get_datetime(i) aimPath = 'C:\\data\\' + filename isExists=os.path.exists(aimPath) if not isExists: os.makedirs(aimPath) print(aimPath + 'ok!') return aimPath else: print(aimPath + 'file is exists!') return False def delete_flie(filePath): for i,j,k in os.walk(filePath): n = 0 while n < len(k): fileneed = filePath + '\\' + k[n] if(os.path.exists(fileneed)): os.remove(fileneed) else: pass n = n + 1 # get file name and move def get_filename(filePath): for i,j,k in os.walk(filePath): n = 0 while n < len(k): fileneed = filePath + '\\' + k[n] if(os.path.exists(fileneed)): shutil.move(fileneed,aimPath) else: pass n = n + 1 # Monday special def is_Monday(): if datetime.datetime.now().weekday() == 0: return 3 else: return 1 filePath = 'C:\\data' pos = is_Monday() aimPath = get_newfile(pos) get_filename(filePath) delete_flie(filePath)
1.get_newfile
該函數調用get_datetime函數,獲得指定日期,並按照YYYYMMDD的格式將日期拼接;
使用isExists,來對文件名是否存在進行校驗,如果改文件夾不存在,則新建文件夾。
2.delete_flie
在移動結束後,刪除原目錄的文件;
在刪除前要使用os.path.exists驗證待刪除文件是否存在。
3.get_filename
獲取date文件夾內的文件名,並將其移動到新文件夾內;
在移動前要使用os.path.exists驗證待移動文件是否存在。
4.is_Monday
周一的時候需要將周五、周六、周日的文件都放在以周五日期命名的文件夾中,所以使用這個函數來判斷是星期幾;
datetime.datetime.now().weekday()函數是0-6來表示周一-周五,所以值為0的時候,返回3;
這個函數的值將傳給get_newfile,再調用get_datetime函數,通過控制這段的i,來控制生成的日期時間:
d = str((datetime.datetime.now() – datetime.timedelta(days=i)).date()).split(“-“)
註:shutil.copy會改變文件生成時間,不好對文件進行判斷,所以要使用shutil.move移動文件
以上就是python實現按日期歸檔文件的詳細內容,更多關於python歸檔文件的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python文件目錄操作常用模塊的使用詳解
- python解析照片拍攝時間進行圖片整理
- 使用python對視頻文件分辨率進行分組的實例代碼
- python 批量重命名移動文件
- Python基礎之內置模塊詳解