根据 python 中的时间戳组织文件

Organising Files as per timestamp in python

有一个任务,我必须使用文件的时间范围将文件分组

假设我有这样的文件“2018/12/12 11:32:34xyz.txt

我的任务是我必须使用 python 首先从文件中提取时间范围,然后通过首先按年创建目录,然后按月创建目录,最后按所有顺序将它们分组各自年月内的文件

就像上面egs中的文件一样,它应该在这样的路径中 Files/2018/December/file.txt

只需要有关使用哪些库以及如何解决问题的帮助

因此,您想将带有时间戳名称的文件复制到目录中。我们的输入数据:

  1. 包含时间戳文件的目录
  2. 我们需要保存文件的目录。

我们要求用户输入这些目录,然后我们需要打开目录1(带有时间戳文件的目录)并逐个读取。 我们可以获取目录中的所有文件名并像在列表中一样进行迭代,解析文件名中的日期。我们得到第一个文件名并将文件名拆分 space。现在我们在第一个数组元素和第二个数组元素中都有日期和时间。 现在我们将使用日期时间库将日期和时间转换为日期时间。这样做之后,我们可以很容易地得到年、月、日等。 现在我们可以检查年和月并创建一个与该年和月相关联的文件夹。如果文件夹不存在,我们可以创建它。之后 - 使用复制复制该文件夹中的文件

编辑。我的解决方案:

import glob
import os
from datetime import datetime
from shutil import copyfile


def getListOfFilenamesInFolder(src):
    filenamesWithPath = glob.glob(f"{src}\*.txt")
    filenames = [filename.split('\')[-1] for filename in filenamesWithPath]
    return filenames


def parseFilename(filename):
    splittedFilename = filename.split(' ')
    dateFilename = splittedFilename[0]
    timeFilename = splittedFilename[1]
    datetimeFilename = datetime.strptime(f'{dateFilename} {timeFilename}', '%Y-%m-%d %H.%M.%S')
    return datetimeFilename



def createFolderIfNotExist(dest, datetimeFilename):
    path = os.path.join(dest, 'File')
    if not os.path.exists(path):
        os.mkdir(path)
    path = os.path.join(path,  str(datetimeFilename.year))
    if not os.path.exists(path):
        os.mkdir(path)
    path = os.path.join(path, datetimeFilename.strftime("%b"))
    if not os.path.exists(path):
        os.mkdir(path)
    return path
    pass


def makeSortingByFilenames(src, dest):
    listOfFilenames = getListOfFilenamesInFolder(src)
    print(listOfFilenames)
    for filename in listOfFilenames:
        datetimeFilename = parseFilename(filename)
        path = createFolderIfNotExist(dest, datetimeFilename)
        copyfile(os.path.join(src, filename), os.path.join(path, ' '.join(filename.split(' ')[2:])))

if __name__ == '__main__':
    srcDirectory = input()
    destDirectory = input()
    makeSortingByFilenames(srcDirectory, destDirectory)

我有那个结构文件夹。如果您有其他文件名,则需要将 datetimeFilename = datetime.strptime(f'{dateFilename} {timeFilename}', '%Y-%m-%d %H.%M.%S') 更改为您的特定文件名。

截图:

我的输入输出: 结果: