Search code examples
pythonfilenames

Change file name to date of modification


I have the following issue, I wrote a piece of code which rename file names in a directory and its sub-directories. Now instead of changing it to the current date I want it to change to the file modification date.

How can I do that?

import os, path
from datetime import datetime
import time

def walk_dir(path):
    current_day = datetime.now().strftime("%Y-%m-%d")
    for root, dirs, files in os.walk(path):    
        for filename in files:
            current = root + "/" + filename
            if os.path.isfile(current):
                print "ORIGINAL NAME: " + current
                ext = os.path.splitext(filename)[1]
                target_name = os.path.join(root, '{}{}'.format(current_day, ext))
                print "NEW NAME: " + target_name
                os.rename(current, target_name)

walk_dir("/Users/shirin/Desktop/Artez")

Solution

  • import os
    import datetime
    
    for filename in directory:
        modified_time = os.path.getmtime(filename)   # get file modification timestamp
        modified_date = datetime.date.fromtimestamp(modified_time)  # convert timestamp to a date
        os.rename(filename, modified_date.strftime("%Y-%m-%d"))
    

    Note this is dangerous, since you might override files who share the same modification date.