自动打包你的过期文件并移动到备份文件夹

2022-03-26 194 0

编写一个Python程序,要求

1. 找出当前目录下所有距离上次修改时间超过1个月的文件

2. 将所有文件重命名,在原本文件名的开头加上最后修改日期

比如原来是projects.zip,则改为2019-09-10-projects.zip

3. 创建一个新文件夹叫backup

4. 将所有重命名后的文件都添加到压缩包里,给压缩包名字加上今天日期

5. 将压缩包移动到backup文件夹里面

6. 删掉原始文件


个人解题思路,先找到一个月前的时间戳,比这个时间戳小的都是一个月之前的。

然后要求1中说明是文件而没有包含文件夹,所以这里要有一个文件夹判断file.os.isdir()

然后循环所有文件的修改时间st_mtime

再把新文件的命名时间规则strftime("%Y-%m-%d")

这样基本前面1-2步骤就能完成

第3步很简单,

判断backup文件夹是否存在,不存在才生成这个文件夹

if not os.path.exists('backup'):
os.mkdir('backup')

第4步要先把所有重命名成功(有些文件的最后一次修改时间不符合要求)的文件收集起来,这里要用到append()

先新建file_list = []

再把重命名成功的文件名加进去。

这样就获取到了文件列表,最后新建一个压缩包,把文件都添加进压缩包,确定好压缩包名称并且移动压缩包即可

最终代码如下:

from datetime import datetime
import os
import time
import shutil
import zipfile
#判断backup文件夹是否存在,不存在才生成这个文件夹
if not os.path.exists('backup'):
    os.mkdir('backup')
file_list = []
#这里偷懒直接确定了1个月前的固定时间,获取了时间戳
old_time = datetime(2022,2,23).timestamp()
for file in os.scandir():
    if not file.is_dir():
        if int(len(str(file.name))) < 9:
            if int(file.stat().st_mtime) > int(old_time):
                old_name = file.name
                new_time = datetime.fromtimestamp(file.stat().st_mtime)
                new_name = f'{new_time.strftime("%Y-%m-%d")}-{old_name}'
                os.rename(old_name,new_name)
                file_list.append(new_name)

zip_filename = f'{datetime.now().strftime("%Y-%m-%d")}.zip'
with zipfile.ZipFile(zip_filename,'w') as zipobj:
    for file in file_list:
        zipobj.write(file)
shutil.move(zip_filename,'backup/')
print('备份完成')

这里个人加入了一个验证文件名长度的代码,避免第2次循环文件名被继续加长

相关文章

python 免费下载歌曲和破解VIP视频
Python抓取淘宝评论(1)
Python抓取3D打印笔天猫评论(3)
利用python对电脑文件进行分类整理
Python抓取3D打印笔天猫评论(1)
python抓取唯品会3D打印笔信息

发布评论