如何根据时间或日期将文件从一个文件夹移动到另一文件夹

时间:2019-04-30 06:49:10

标签: python-3.x

我正在尝试根据时间或日期戳将文件从一个文件夹移动到另一个文件夹。就像我想将今天的文件保留在同一文件夹中,然后将昨天的文件移到另一个文件夹中。

当前,我能够将文件从一个文件夹移动到另一个文件夹,但是它不是基于日期或时间的。

文件名看起来像这样。 “ 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")

1 个答案:

答案 0 :(得分:2)

我认为我有一些适合您的东西。我对您的“移动”功能做了一些细微的调整,所以希望您不要介意。如果您有多个需要移动的“旧”文件,则此方法也可以使用。

让我知道这是否有帮助:)

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)