python實(shí)現(xiàn)按日期歸檔文件
在工作過(guò)程中,data目錄會(huì)一直接收文件,收到的文件放到一個(gè)大目錄里不好判斷是否漏收,也不利于檢索;
所以寫了個(gè)腳本,每天早上九點(diǎn)用Windows計(jì)劃執(zhí)行,將昨日這個(gè)文件夾內(nèi)收到的文件全部歸檔,歸檔文件夾的名字就是昨天的日期,腳本及解釋如下:
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
該函數(shù)調(diào)用get_datetime函數(shù),獲得指定日期,并按照YYYYMMDD的格式將日期拼接;
使用isExists,來(lái)對(duì)文件名是否存在進(jìn)行校驗(yàn),如果改文件夾不存在,則新建文件夾。
2.delete_flie
在移動(dòng)結(jié)束后,刪除原目錄的文件;
在刪除前要使用os.path.exists驗(yàn)證待刪除文件是否存在。
3.get_filename
獲取date文件夾內(nèi)的文件名,并將其移動(dòng)到新文件夾內(nèi);
在移動(dòng)前要使用os.path.exists驗(yàn)證待移動(dòng)文件是否存在。
4.is_Monday
周一的時(shí)候需要將周五、周六、周日的文件都放在以周五日期命名的文件夾中,所以使用這個(gè)函數(shù)來(lái)判斷是星期幾;
datetime.datetime.now().weekday()函數(shù)是0-6來(lái)表示周一-周五,所以值為0的時(shí)候,返回3;
這個(gè)函數(shù)的值將傳給get_newfile,再調(diào)用get_datetime函數(shù),通過(guò)控制這段的i,來(lái)控制生成的日期時(shí)間:
d = str((datetime.datetime.now() - datetime.timedelta(days=i)).date()).split("-")
注:shutil.copy會(huì)改變文件生成時(shí)間,不好對(duì)文件進(jìn)行判斷,所以要使用shutil.move移動(dòng)文件
以上就是python實(shí)現(xiàn)按日期歸檔文件的詳細(xì)內(nèi)容,更多關(guān)于python歸檔文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python3時(shí)間轉(zhuǎn)換之時(shí)間戳轉(zhuǎn)換為指定格式的日期方法詳解
- python獲取指定時(shí)間段內(nèi)特定規(guī)律的日期列表
- python (logging) 日志按日期、大小回滾的操作
- Python時(shí)間和日期庫(kù)的實(shí)現(xiàn)
- Python tkinter實(shí)現(xiàn)日期選擇器
- Python繪制數(shù)碼晶體管日期
- Pycharm創(chuàng)建python文件自動(dòng)添加日期作者等信息(步驟詳解)
- 基于python獲取本地時(shí)間并轉(zhuǎn)換時(shí)間戳和日期格式
- python 帶時(shí)區(qū)的日期格式化操作
- 如何使用 Python 讀取文件和照片的創(chuàng)建日期
- Python 常用日期處理 -- calendar 與 dateutil 模塊的使用
- python 常用日期處理-- datetime 模塊的使用
- python自動(dòng)提取文本中的時(shí)間(包含中文日期)
- Python 處理日期時(shí)間的Arrow庫(kù)使用
- Python 日期與時(shí)間轉(zhuǎn)換的方法
- Python如何將字符串轉(zhuǎn)換為日期
- python實(shí)現(xiàn)將中文日期轉(zhuǎn)換為數(shù)字日期
- 教你怎么用python實(shí)現(xiàn)字符串轉(zhuǎn)日期
相關(guān)文章
python基于Kivy寫一個(gè)圖形桌面時(shí)鐘程序
這篇文章主要介紹了python如何基于Kivy 寫一個(gè)桌面時(shí)鐘程序,幫助大家更好的利用python開(kāi)發(fā)圖形程序,感興趣的朋友可以了解下2021-01-01
python機(jī)器學(xué)習(xí)MATLAB最小二乘法的兩種解讀
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)中MATLAB最小二乘法的兩種解讀方式,有需要的朋友可以借鑒參考下希望能夠有所幫助2022-02-02
Python用zip函數(shù)同時(shí)遍歷多個(gè)迭代器示例詳解
這篇文章主要給大家進(jìn)行介紹了Python如何用zip函數(shù)同時(shí)遍歷多個(gè)迭代器,文中給出了示例以及原理和注意事項(xiàng),相信會(huì)對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11
python基于paramiko將文件上傳到服務(wù)器代碼實(shí)現(xiàn)
這篇文章主要介紹了python基于paramiko將文件上傳到服務(wù)器代碼實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
讓python json encode datetime類型
python2.6+ 自帶的json模塊,不支持datetime的json encode,每次都需要手動(dòng)轉(zhuǎn)為字符串,很累人,我們可以自己封裝一個(gè)簡(jiǎn)單的方法處理此問(wèn)題。2010-12-12

