manoj
manoj

Reputation: 131

How to move the files from one folder to other folder based on time or date

I am trying to move the files from one folder to the other based on the time or date stamp. It's something like I want to keep today file in the same folder and move yesterday file into a different folder.

Currently, I am able to move the files from one folder to other but it's not on date or time-based.

The file name will look something like this. "output-android_login_scenarios-android-1.43-9859-2019-04-30 11:29:31.542548.html"

-------python

  def move(self, srcdir,dstdir):
    currentDirectory = os.path.dirname(__file__)
    sourceFile = os.path.join(currentDirectory, srcdir)
    destFile = os.path.join(currentDirectory, dstdir)
    if not os.path.exists(destFile):
        os.makedirs(destFile)
    source = os.listdir(sourceFile)
    try:
        for files in source:
            shutil.move(sourceFile+'/'+files, destFile)
    except:
          print("No file are present")

Upvotes: 0

Views: 1276

Answers (1)

Spainey
Spainey

Reputation: 402

I think I have something that might work for you. I have made some minor tweaks to your "move" function, so I hope you don't mind. This method will also work if you have more than one 'old' file that needs moving.

Let me know if this helps :)

import os
import shutil
import re
from datetime import datetime

sourceDir = 'C:\\{folders in your directory}\\{folder containing the files}'
destDir = 'C:\\{folders in your directory}\\{folder containing the old files}'

files = os.listdir(sourceDir)

list_of_DFs = []
for file in files:
    if file.endswith('.html'):
        name = file
        dateRegex = re.compile(r'\d{4}-\d{2}-\d{2}')
        date = dateRegex.findall(file)

        df = pd.DataFrame({'Name': name, 'Date': date})
        list_of_DFs.append(df)

filesDF = pd.concat(list_of_DFs,ignore_index=True)

today = datetime.today().strftime('%Y-%m-%d')

filesToMove = filesDF[filesDF['Date'] != today]

def move(file, sourceDir, destDir):
    sourceFile = os.path.join(sourceDir, file)
    if not os.path.exists(destDir):
        os.makedirs(destDir)
    try:
        shutil.move(sourceFile, destDir)
    except:
        print("No files are present")

for i in range(len(filesToMove)):
    file = filesToMove['Name'][i]
    move(file,sourceDir,destDir)

Upvotes: 2

Related Questions