2017-10-10 8 views
1

Je viens de commencer à travailler avec des données en Python, je suis un débutant à nue avec moi! J'ai besoin de convertir des centaines de noms de fichiers de% Y% m% d% H% M% S tels que '20170125211201' en unix epoch time. J'ai pu le faire à des fichiers individuels avecRenommer plusieurs fichiers actuellement dans% Y% m% d% H% M% S à unix époque en Python

>>> 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) 

Je dois encore faire la même chose à des centaines d'autres fichiers avec le même modèle de fichier, mais ai pas eu de chance. J'apprécierais vraiment toute aide!

+0

match essayer et extraire le temps comme nom de fichier avec une expression régulière. – georgexsh

Répondre

0

Vous pouvez résoudre votre tâche en utilisant ce bout de code:

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)