JPV
JPV

Reputation: 1079

Sort dates through file name date

I have a folder with *.txt files which contain a specific format (c is character and d is digit and yyyy-mm-dd-hh-mm-ss is the date format)

cccccd_ddd_cc_ccc_c_dd-ddd_yyyy-mm-dd-hh-mm-ss.txt

or

cccccd_ddd_cc_ccc_c_dd-dddd_yyyy-mm-dd-hh-mm-ss.txt

or

cccccd_ddd_cc_ccc_c_d_yyyy-mm-dd-hh-mm-ss.txt

when the single digidt d is equal to 0

I would like to create a python script to obtain the dates and sort the files from that specific date.

SO far I ahve done

import os
list_files=[]
for file in os.listdir():
    if file.endswith(".txt"):
        #print(file)
        list_files.append(file)

But I am bit new with regular expressions. Thanks

Upvotes: 1

Views: 2206

Answers (2)

Sherlock Holmes
Sherlock Holmes

Reputation: 1

If the files are in the an array called inFiles. Use the following line of code to arrange them based on the date in the string:

inFiles = sorted(inFiles, key=lambda file_name:datetime.strptime(os.path.basename(file_name).split('_')[2],"%Y-%m-%dT%H:%M:%S.%f"))

Upvotes: 0

Anuj Gautam
Anuj Gautam

Reputation: 1255

You can use .split() to split a string. It seems that we can split from the last occurence of "_", remove the part after "." to get the timestamp.
So, method to return timestamp from the file_name is:

def get_timestamp(file_name):
    return file_name.split("_")[-1].split('.')[0]

As all the dates are of same format, python can sort those using the timestamp string itself.
To get the sorted list of filenames using that timestamp, you can do:

sorted_list = sorted(list_files, key=get_timestamp)

More about the Key function can be learned from official python documentation.

Upvotes: 3

Related Questions