将当前处于%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)
我仍然需要做同样的事情到上百的其他文件具有相同的文件模式,但有没有运气。 我真的很感激任何帮助!
答
您可以使用此代码段解决您的任务:
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)
尝试匹配,提取时间喜欢用正则表达式的文件名。 – georgexsh