今天就跟大家聊聊有关怎么在python中根据日期对文件进行归档?python中根据日期对文件进行归档怎么操作?可能很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

怎么在python中根据日期对文件进行归档?python中根据日期对文件进行归档怎么操作?

下面根据实例给大家进行分析:

import os
import datetime
import shutil

首先导入 三个库,一个是关于时间,一个是os模块, shutil库可以对文件或者文件夹进行复制移动。

# get file name函数

def get_datetime(i):
    d = str((datetime.datetime.now() - datetime.timedelta(days=i)).date()).split("-")
    time = d[0] + d[1] + d[2]
    return(time)

这里用到的是get file name函数,返回值是指定路径中的最后一个部件“ d = str((datetime.datetime.now() - datetime.timedelta(days=i)).date()).split("-")”是将当前的时间减去昨天的时间进行归档处理,分割方式使用“-”。

# 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

这个new file函数调用另一个get_datetime函数,获得一个指定的日期使用年月日“YYYYMMDD”的格式将日期进行拼接,然后使用isExists来判断文件夹是否存在,对文件名是否存在进行校验,如果此文件夹不存在,则新建文件夹。

delete_flie函数

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

delete_flie函数表示在文件或者文件夹移动结束后,自动把原目录中的文件进行删除,在删除前会使用os.path.exists来验证待删除文件还是否存在。

# 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

get_filename函数用来获取HH文件夹内的文件名,并将其移动到一个新文件夹中;在移动前要会使用os.path.exists来验证待移动文件是否存在。

# Monday special函数

def is_Monday():
    if datetime.datetime.now().weekday() == 0:
        return 3
    else:
        return 1

使用Monday special函数来判断是星期几,因为在周一的时候需要将周五、周六、周日的文件都放在以周五日期命名的文件夹中。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来移动文件。

filePath = 'D:\\HH'
pos = is_Monday()
aimPath = get_newfile(pos)
get_filename(filePath)
delete_flie(filePath)

最后就是将所有文件进行归档处理。

看完上述内容,你们对怎么在python中根据日期对文件进行归档?python中根据日期对文件进行归档怎么操作?有进一步的了解吗?如果还想了解更多知识或者相关内容,可以继续关注哦!

更多python相关文章请访问分类:python

【版权声明】本文图文出自大盘站@dapan.cc,转载请注明出处!