用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指令,虽然用双引号给解决了中文文件名问题,但对于文件名前缀有“-”等特殊字符的情况,还没有处理。请各位指点。

你可能感兴趣的:(python,微信)