将当前处于%Y%m%d%H%M%S的多个文件重命名为Python中的unix时代

将当前处于%Y%m%d%H%M%S的多个文件重命名为Python中的unix时代

问题描述:

我刚刚开始使用Python中的一些数据,我是一个随身携带的初学者!我需要将数百个文件名从%Y%m%d%H%M%S(例如'20170125211201')转换为unix时代。我能这样做单独的文件与将当前处于%Y%m%d%H%M%S的多个文件重命名为Python中的unix时代

>>> import os 
>>> f='20170125211201' 
>>> import time 
>>> date_time='20170125204151' 
>>> pattern='%Y%m%d%H%M%S' 
>>> epoch=int(time.mktime(time.strptime(date_time,pattern))) 
>>> new_name='{}'.format(epoch) 
>>> os.rename(f,new_name) 

我仍然需要做同样的事情到上百的其他文件具有相同的文件模式,但有没有运气。 我真的很感激任何帮助!

+0

尝试匹配,提取时间喜欢用正则表达式的文件名。 – georgexsh

您可以使用此代码段解决您的任务:

import datetime 
import glob 
import os 
import shutil 

input_dir = '/home/username/input_dir' # here should be path to directory with input files 
output_dir = '/home/username/output_dir' # here should be path to output directory for new files 
files = glob.glob(os.path.join(input_dir, '*')) 

for filename in files: 
    basename = os.path.basename(filename) 
    basename, extension = os.path.splitext(basename) 
    try: 
     epoch = int(datetime.datetime.strptime(basename, '%Y%m%d%H%M%S').timestamp()) 
    except: 
     print('Unexpected format of filename: {}'.format(filename)) 
    out_filename = os.path.join(output_dir, ''.join([str(epoch), extension])) 
    shutil.copy(filename, out_filename)