首頁>技術>

這篇文章主要介紹了python實現如何按日期歸檔檔案,幫助大家更好地理解和使用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,來對檔名是否存在進行校驗,如果該資料夾不存在,則新建資料夾。

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移動檔案

17
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 完全搞定,Java中反射的應用(取得類的結構)