python根据时间和类型查找文件并将该文件复制到新的文件夹下

   日期:2020-10-07     浏览:242    评论:0    
核心提示:在现实生活中,我们可能遇到需要对文件夹里的各种文档进行处理。假设存在一种需求:文件夹里的文件太多,我们需要抽取出某个时间段以前的文件。今天来实现下这个需求。之前写过一些关于文件整理的,今天只是补充下。python自动化办公:文件篇(自动整理文件,一键完成)...

在现实生活中,我们可能遇到需要对文件夹里的各种文档进行处理。
假设存在一种需求:文件夹里的文件太多,我们需要抽取出某个时间段以前的文件。
今天来实现下这个需求。
之前写过一些关于文件整理的,今天只是补充下。
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(文件)

电气工程的计算机萌新:余登武。
写博文不容易,如果你觉得本文对你有用,请点个赞支持下,谢谢。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服