在现实生活中,我们可能遇到需要对文件夹里的各种文档进行处理。
假设存在一种需求:文件夹里的文件太多,我们需要抽取出某个时间段以前的文件。
今天来实现下这个需求。
之前写过一些关于文件整理的,今天只是补充下。
python自动化办公:文件篇(自动整理文件,一键完成)
时间模块
python 日期和时间处理(time,datetime模块讲解)
os模块
Python os.path() 模块 详解 附算例
re模块
python :re模块基本用法
获取访问时间
t = os.path.getatime(filePath)
获取创建时间
t = os.path.getctime(filePath)
#获取修改时间
t = os.path.getmtime(filePath)
准备工作
原始数据文件夹
新建一个空白文件夹
代码:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author: yudengwu(余登武)
# @Date : 2020/10/4
#@email:1344732766@qq.com
import os
import re
import time
from datetime import datetime
#首先定义规则,
pattern=re.compile(r'.+\.jpg|pdf')#定义文档类型,寻找jpg,pdf
for root ,dirs,files in os.walk(r'C:\Users\Shineion\Desktop\yu'):
for name in files:
file_path=os.path.join(root,name)#包含路径的文件
if pattern.search(file_path) is not None :
#print(file_path)#匹配到的文件 文件路径名
ctime=time.localtime(os.path.getctime(file_path))#创建时间
"""
#time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=13, tm_min=45, tm_sec=50, tm_wday=6,
tm_yday=264, tm_isdst=0)
"""
ctime=time.strftime("%Y/%m/%d %H:%M:%S",ctime)#字符型
"""
ctime
2020/09/20 13:45:50
"""
ctime=datetime.strptime(ctime, "%Y/%m/%d %H:%M:%S")#ctime 由字符型转换为时间性
t1 = datetime(year=2020, month=10, day=26,hour = 7, minute = 9, second = 33)#自定义一个时间
#做差
if ctime<t1:
command_line = 'copy %s D:\\余登武测试' % file_path.replace('/', '\\')#cmd复制命令
os.system(command_line)#调用cmd
print('复制成功')
结果和简单解析
结果:
查看下zhengjian为什么没有复制过来,发现属性为JPG
修改文档类型为
pattern=re.compile(r'.+\.jpg|pdf|JPG')
这次复制过来啦
修改日期为9月26日,即只要9月26日之前的文件(PDF,jpg)。
注意事项:有时文件复制失败 可能是文档名的原因(有些文档名即有中文,又有英文。容易失败)
代码解析
os.system(command_line)调用cmd来执行复制文件。
cmd复制文件命令:
copy 源文件 目的路径
time 时间不可以做差等计算,datetime可以
ctime=time.localtime(os.path.getctime(file_path))#创建时间
"""
#time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=13, tm_min=45, tm_sec=50, tm_wday=6,
tm_yday=264, tm_isdst=0)
"""
ctime=time.strftime("%Y/%m/%d %H:%M:%S",ctime)#字符型
"""
ctime
2020/09/20 13:45:50
"""
ctime=datetime.strptime(ctime, "%Y/%m/%d %H:%M:%S")#ctime 由字符型转换为时间性
还可以删除文件,不复制。
指令os.remove(文件)
电气工程的计算机萌新:余登武。
写博文不容易,如果你觉得本文对你有用,请点个赞支持下,谢谢。