遍历文件夹里的所有文件并复制的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改一下。 运行结果截图我就不发上来了 毕竟懂的都
懂
总结
如果想遍历复制其他格式文件的话 可以自行更改判定方式啥的
萌新自学两个月python写的代码 希望大佬前来指正
标签:遍历,full,python,self,文件夹,path,os,path1 来源: https://blog.csdn.net/Nknights/article/details/114099747