根据 python 中的时间戳组织文件
Organising Files as per timestamp in python
有一个任务,我必须使用文件的时间范围将文件分组
假设我有这样的文件“2018/12/12 11:32:34xyz.txt“
我的任务是我必须使用 python 首先从文件中提取时间范围,然后通过首先按年创建目录,然后按月创建目录,最后按所有顺序将它们分组各自年月内的文件
就像上面egs中的文件一样,它应该在这样的路径中
Files/2018/December/file.txt
只需要有关使用哪些库以及如何解决问题的帮助
因此,您想将带有时间戳名称的文件复制到目录中。我们的输入数据:
- 包含时间戳文件的目录
- 我们需要保存文件的目录。
我们要求用户输入这些目录,然后我们需要打开目录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')
更改为您的特定文件名。
截图:
我的输入输出:
结果:
有一个任务,我必须使用文件的时间范围将文件分组
假设我有这样的文件“2018/12/12 11:32:34xyz.txt“
我的任务是我必须使用 python 首先从文件中提取时间范围,然后通过首先按年创建目录,然后按月创建目录,最后按所有顺序将它们分组各自年月内的文件
就像上面egs中的文件一样,它应该在这样的路径中 Files/2018/December/file.txt
只需要有关使用哪些库以及如何解决问题的帮助
因此,您想将带有时间戳名称的文件复制到目录中。我们的输入数据:
- 包含时间戳文件的目录
- 我们需要保存文件的目录。
我们要求用户输入这些目录,然后我们需要打开目录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')
更改为您的特定文件名。
截图:
我的输入输出: