编程语言
首页 > 编程语言> > 遍历文件夹里的所有文件并复制的python小程序

遍历文件夹里的所有文件并复制的python小程序

作者:互联网

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

萌新第一次发文章 学了两个月python 写的一个程序。
功能是遍历输入文件路径内所有文件,判断是否是所需类型然后执行复制或者其他的操作


代码可能有些臃肿 麻烦大佬前来指正

一、代码的实现

创建了一个类 把功能整合成接口 然后主函数内实现

二、使用步骤

1.代码

先把打码发出来:

主函数:

import time
import os #引入文件操作系统模块
from shutil import copy2   
def main():#主函数
    shijian=time.localtime(time.time())  #当前时间
    path1=Copypath()
    path1.mon,path1.day,path1.hour=shijian[1],shijian[2],shijian[3]
    path1.typo=['.jpg','.png','.gif','.bmp']  #要输出的文件类型
    path1.trues=1    #复制请输入1  只输出文件名及时间输入其他值
    # path1.mon=2                #月份
    # path1.day=14               #日
    # path1.hour=11              #小时  如果想复制整天请填 25
    #图片原始路径  
    path1.yuanpath=r'E:\001' 

    #要复制到的目标路径   
    path1.mubiaopath=r'E:\002' 

    path1.makedirs()
    path1.find_file(path1.yuanpath)
    path1.endd()

遍历文件的类:

class Copypath(object):#把图片复制到目标文件夹
    def __init__(self): #默认的实例属性
        self.i=0   #记录个数
        self.trues=0  #用来判断
        self.typo=['jpg'] #默认只复制.jpg
        self.year=2021  #默认2021年

    def copyt(self,item):#执行复制
        if self.trues==1:
            copy2(item,self.mubiaopath)
        self.i+=1 #计数+1
        print('%-30s'%(item.split('\\')[-1]),time.localtime( os.path.getmtime(item)) [0:5]) #打印文件名和修改时间

    def find_file(self,file_path):#递归遍历该文件夹下的所有文件并判断是否执行
        listrs=os.listdir(file_path)# 得到改路径下的所有文件名
        for fileitem in listrs:
            full_path=os.path.join(file_path,fileitem) #获取完整的文件路径
            if os.path.isdir(full_path):  #判断是否是文件夹
                self.find_file(full_path)  #是一个文件夹 再次去递归
            else:
                if self.leixng(full_path) and self.ptime(full_path): #判断是否要执行
                    self.copyt(full_path)
        pass

    def leixng(self,full_path): #根据后缀判断是否为图片
        if full_path[-4:] in self.typo:
            return True 

    def ptime(self,full_path):#判断文件的修改时间
        mtime=lambda x:time.localtime( os.path.getmtime(full_path))[x]  #匿名函数 mtime为时间 
        if mtime(0)==self.year and mtime(1)==self.mon and mtime(2)==self.day and (mtime(3)==self.hour or self.hour>24 or self.hour<0):  #判断时间                                                                             
            return True
    
    def makedirs(self):#如不存在则创建该文件夹
        if not os.path.isdir(self.mubiaopath):
            os.makedirs(self.mubiaopath) 
        
    def endd(self): #结束
        if self.trues==1:
            print('一共复制了%d张图片\n复制结束\n时间%d %d %d %d'%(self.i,self.year,self.mon,self.day,self.hour))
        else:
            print('该时间(%d %d %d %d)共有%d张图片'%(self.year,self.mon,self.day,self.hour,self.i))
            

三、使用心得

程序的备注我都写在程序里了,很详细 应该都能看懂。
最开始写这个程序是想批量保存qq群聊天记录的图片 ,然后我打开了qq的文件夹 ,发现群图片的保存方式是每张图片都用随机的23个字符命名 ,然后前两个字符创建一个文件夹 ,第三第四个字符再在那个文件夹里创建一个新的文件夹 ,之后把图片保存在那个文件夹里 。 就是下图这个文件夹 ,十万多个套娃文件夹,而且随着使用时间的增长,文件会越来越多, 找起来很麻烦, 用这个程序找想要的图片就很方便。

首先 ,先不打开想要保存的图片的群 , 等一段时间 记录多了 , 打开 然后向上刷新聊天 , 等图片全加载之后 运行这个程序 ,他能把这一个小时的图片全复制在一个新文件夹里 ,如果刚好是在59分时候刷新的 可以手动把hour改一下。 运行结果截图我就不发上来了 毕竟懂的都
1

qq群聊天记录的图片就在这个文件夹


总结

如果想遍历复制其他格式文件的话 可以自行更改判定方式啥的

萌新自学两个月python写的代码 希望大佬前来指正

标签:遍历,full,python,self,文件夹,path,os,path1
来源: https://blog.csdn.net/Nknights/article/details/114099747