用python按日期将微信文件移动到月份文件夹内

微信的文件管理非常糟糕,不论是聊天中的自动接收的附件、视频、图片,还是手动保存的文件,都保存在一个文件夹内。不仅占据大量手机存储,而且成千上万的小文件夹在一个文件夹内,不仅查找、管理困难,甚至列个目录都极慢。

对于占据手机存储的问题,我采用同步后删除的方式,每天将微信的附件、视频、图片等全部复制到家庭NAS内,然后删除,一下子清理出几十G空间。每天同步,既保证数据不丢失,又能保证手机空间占用最小。

接下来,需要对移动到NAS上的微信文件,按照年月甚至日建立文件夹,将文件按日期移动到文件夹内。

python代码如下:

#encoding-utf8
import sys
import os
import time
import datetime

for file in os.listdir("./"):
    #只处理文件,不处理文件夹   
	if os.path.isdir(file):
		continue
	#获取文件真实的创建日期 

    createdate=datetime.datetime.fromtimestamp(os.stat(file).st_mtime)
	#创建年份文件夹
    year=createdate.strftime("%Y")
	if not os.path.exists(year):
		os.makedirs(year)
	
    #创建月份文件夹    
    month=createdate.strftime("%m")
	mpath=year + "/" + month
	if not os.path.exists(mpath):
		os.makedirs(mpath)
	print(file+" created date:"+createdate.strftime("%Y-%m-%d"))
	#按创建日期将文件移到对对应的年月文件夹内
    cmd="mv \""+file+ "\"  "+ mpath
	print(cmd)
	os.system(cmd) 

需要说明的是,python 文件创建时间如何获取。CSDN以及很多文章,都用st_ctime来获取文件创建时间。实际执行的时候发现,st_ctime获取的不是dir或ls时显示的文件日期,而是我们最后移动或复制这个文件的日期。

按照struct stat 定义:

time_t      st_atime;   /* time of last access -最近存取时间*/  
time_t      st_mtime;   /* time of last modification -最近修改时间*/  
time_t      st_ctime;   /* time of last status change -最后权限修改时间 */

因此,本文采用st_mtime,测试结果显示,与dir/ls显示的文件日期一致。

遗留问题:

以上代码还有个遗留问题,就是生成的mv指令,虽然用双引号给解决了中文文件名问题,但对于文件名前缀有“-”等特殊字符的情况,还没有处理。请各位指点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值