日常工作中,我习惯新建一个文件夹,并将当天处理的所有文件丢到里面去,并以当前日期为文件夹名。这样,日后要查找时可以依据日期来方便查询,写年终总结时,也可快速回顾一整年的工作。
下面这段代码,其作用就是辅助上述操作:将新建文件夹改名为当前日期,并将其内的所有文件添加当前日期前缀。主要是Python的日期格式化、函数返回值的应用与os目录操作方法。
'''将新建文件夹改名为当前日期,并将其内的所有文件添加当前日期前缀'''
#导入日志模块
import logging
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s-%(levelname)s:%(message)s')
#logging.disable(logging.CRITICAL)
#logging.debug(变量)
import os
# 定义函数:
#定义切换工作目录函数
def 切换工作目录(工作目录):
原工作目录 = os.getcwd()
logging.debug(f'原工作目录:%s' % (原工作目录))
#预存储工作目录
os.chdir(工作目录)
现工作目录 = os.getcwd()
logging.debug(f'现工作目录:%s' % (现工作目录))
#切换到工作目录
#获取当前工作目录下的所有文件名
def 列出目录文件(路径):
import os
文件目录 = os.listdir(路径)
print(f'目录“{路径}”下有以下文件:\n{文件目录}')
#返回文件夹内的文件清单
return 文件目录
#如果主文件名没有日期前缀,则添加日期前缀并重命名
def 加当前日期前缀重命名(文件列表, 前缀='', 后缀=''):
import os
计数 = 0
for 原文件 in 文件列表:
文件名 = os.path.splitext(原文件)
主文件名 = 文件名[0]
扩展名 = 文件名[1]
if 主文件名[:8]!=日期前缀:
os.renames(原文件, (日期前缀+前缀 + 主文件名 + 后缀 + 扩展名))
计数+=1
print(f'共有{计数}个文件被重命名')
#执行:
# 生成格式化20230314形式目录名前缀
import time
日期前缀=time.strftime("%Y%m%d",time.localtime())
#time.strftime方法用于格式化日期,把日期格式转化为字符串格式
#%Y:完整年份,如:2023
# %m:月份,如:01~12(两位)
# %d:日期,如:01-31(两位)
# %c:本地日期和时间,如:Tue Mar 14 15:52:08 2023
# %x:本地日期,月/日/年,如:03/14/23
# %X:本地时间,时:分:秒,如:15:54:28
# %j:该年中第几天,001~366
# %w:该日期中第几天,0~6,星期天为第0天
# %U:该年中第几个星期,00~53,星期天为一周的开始
# %H:该日第几个小时(24小时制)00~23
# %I:该日第几个小时(12小时制)00~12
# %M:分钟,00~59
# %S:秒,00-61(出于历史的原因,支持61秒)
# %a:简写英文星期,Mon,Tue,Wed,Thu,Fri,SatmSun
# %A:完整拼写英文星期
# %b:简写月份
# %B:完整拼写月份
# %p:上午或下午,AM或PM
# %%:百分号本身,%
def 将指定目录转换为当前日期(待处理目录):
目录各部分列表=待处理目录.split('\\')
logging.debug(目录各部分列表)
工作目录=目录各部分列表[-1]
logging.debug(工作目录)
工作路径=os.path.dirname(待处理目录)
logging.debug(工作路径)
#os.path.dirname(路径)方法获取该路径中除最后一级目录外的路径
新文件夹名=工作路径+'\\'+日期前缀
logging.debug(新文件夹名)
if 工作目录!=日期前缀:
os.rename(待处理目录,新文件夹名)
新目录文件列表=列出目录文件(新文件夹名)
#返回文件夹路径
return 新文件夹名
#执行
待处理目录='F:\\我的文档\\文件处理\\新建文件夹'
日期目录=os.path.dirname(待处理目录)+'\\'+日期前缀
if os.path.isdir(待处理目录):
#如果待处理目录是目录(已存在)
文件夹路径=将指定目录转换为当前日期(待处理目录)
#输出文件夹路径给“列出目录文件”函数和“切换工作目录”函数
文件清单=列出目录文件(文件夹路径)
#输出文件清单给"加当前日期前缀重命名"函数
切换工作目录(文件夹路径)
#切换工作目录到刚刚重命名的文件夹中,避免繁琐的路径定义
加当前日期前缀重命名(文件清单,前缀='-')
#显示最终结果
列出目录文件(文件夹路径)
elif os.path.isdir(日期目录):
#如果日期目录已存在
切换工作目录(日期目录)
文件清单 = 列出目录文件(日期目录)
加当前日期前缀重命名(文件清单, 前缀='-')
列出目录文件(日期目录)
# 打开目录
import os
os.startfile(os.getcwd())