当处理大量数据样本时,有时会遇到批量给文件打时间戳的需求,手动操作起来难以想象,这里给大家分享一个利用python批量为文件夹中文件打时间戳的方法:
- Key issue / 核心问题
获取文件创建(修改)日期并将此部分信息整合入文件名
- Flowchart / 流程图
- Code / 代码
import os
import datetime
path=os.path.abspath('.')
path_files = path+'/files'
path_target = path+'/converted'
for files in os.listdir(path_files):
file_mtime = os.path.getmtime(os.path.join(path_files,files)) #get timeinfo in float form
file_mtime = datetime.datetime.fromtimestamp(file_mtime) #convert float time into date objective
file_mtime = datetime.datetime.strftime(file_mtime, '%Y%m%d') #convert date obj. to str in format yyyymmdd
fname=os.path.splitext(files)[0] #remove extensions in filename
fname=fname+'-T'+file_mtime #add timestamp information
fname= fname+os.path.splitext(files)[1] #add extension info.and
file_src=os.path.join(path_files,files)
file_tar=os.path.join(path_target,fname)
os.rename(file_src,file_tar) #rename files with timestamp info.
- useful gadget / 一些有用的“升级”组件
补充两个有用的"小组件“:
1)有时候文件夹中可能不止有文件,还会有子文件夹,可以增加一个filecheck,仅让listdir返回文件
添加在程序中进行如下替换:def onlyfile(path): for file in os.listdir(path): if os.path.isfile(os.path.join(path,file)): yield file
2)有时候可能需要对读取到的时间戳进行操作,需要加减一(几)天日期,可通过以下方式实现:#原程序 for files in os.listdir(path_files): #替换为 for files in onlyfile(path_files):
def addoneday(date): ori_date = datetime.datetime.strptime(date,'%Y%m%d') altered_date += datetime.timedelta(days=1) tar_date = datetime.datetime.strftime(altered_date,'%Y%m%d') return tar_date