这里给您详细讲解一下Python实现按日期归档文件的完整攻略。
1. 确定归档的基准时间
要进行按日期归档,首先需要确定归档的基准时间。在该基准时间之前的文件将被整理到过去的日期文件夹中,而在基准时间之后的文件则会被整理到当前日期文件夹中。可以将基准时间设置为程序运行的当天日期,也可以根据需求设置其他时间。这里以程序运行当天为基准时间进行代码实现。
import datetime
# 获取当天日期
today = datetime.datetime.now().strftime('%Y-%m-%d')
print(today)
运行以上代码,可以输出如下当前日期:
2022-11-06
2. 扫描指定目录下的文件
接下来需要扫描指定目录下的文件,并将其整理到对应的日期文件夹中。假设要整理的文件都在“/home/user/documents”目录下,可以使用os模块中的listdir函数扫描目录下的所有文件。
import os
# 目录路径
dir_path = '/home/user/documents'
# 获取目录下的文件列表
file_list = os.listdir(dir_path)
print(file_list)
运行以上代码,可以输出指定目录下的所有文件,结果如下:
['file1.txt', 'file2.doc', 'file3.pdf', ...]
3. 根据文件日期创建对应文件夹
接下来需要根据文件的日期创建对应的日期文件夹。在这里,我们可以使用datetime模块中的strptime函数将文件的修改时间转换为日期格式,并使用os模块中的mkdir函数创建对应的文件夹。需要创建的文件夹的格式为“年-月-日”。
# 遍历文件列表,创建对应日期文件夹
for file in file_list:
# 获取文件的修改时间
modified_time = os.path.getmtime(dir_path + '/' + file)
# 将修改时间转换为字符串格式
file_date = datetime.datetime.fromtimestamp(modified_time).strftime('%Y-%m-%d')
# 创建对应日期文件夹
os.makedirs(dir_path + '/' + file_date, exist_ok=True)
以上代码中,使用了os模块中的getmtime函数获取文件的修改时间,并使用datetime模块中的fromtimestamp函数将修改时间转换为日期格式。然后使用os模块中的makedirs函数创建对应日期文件夹。
4. 移动文件到对应日期文件夹中
最后一步就是将文件移动到对应日期文件夹中。可以使用shutil模块中的move函数实现。
import shutil
# 遍历文件列表,将文件移动到对应日期文件夹中
for file in file_list:
# 获取文件的修改时间
modified_time = os.path.getmtime(dir_path + '/' + file)
# 将修改时间转换为字符串格式
file_date = datetime.datetime.fromtimestamp(modified_time).strftime('%Y-%m-%d')
# 移动文件到对应日期文件夹中
shutil.move(dir_path + '/' + file, dir_path + '/' + file_date)
以上代码中,使用shutil模块中的move函数将文件移动到对应日期文件夹中。
示例说明
以下为两个示例说明:
示例1
现在有三个文件“file1.txt”、“file2.doc”和“file3.pdf”,它们的修改时间分别为2022年11月1日、2022年11月2日和2022年11月3日。希望将它们按照日期归档到“/home/user/documents”目录下的对应日期文件夹中。
import os
import shutil
import datetime
# 目录路径
dir_path = '/home/user/documents'
# 获取目录下的文件列表
file_list = ['file1.txt', 'file2.doc', 'file3.pdf']
# 遍历文件列表,创建对应日期文件夹
for file in file_list:
# 获取文件的修改时间
modified_time = os.path.getmtime(dir_path + '/' + file)
# 将修改时间转换为字符串格式
file_date = datetime.datetime.fromtimestamp(modified_time).strftime('%Y-%m-%d')
# 创建对应日期文件夹
os.makedirs(dir_path + '/' + file_date, exist_ok=True)
# 遍历文件列表,将文件移动到对应日期文件夹中
for file in file_list:
# 获取文件的修改时间
modified_time = os.path.getmtime(dir_path + '/' + file)
# 将修改时间转换为字符串格式
file_date = datetime.datetime.fromtimestamp(modified_time).strftime('%Y-%m-%d')
# 移动文件到对应日期文件夹中
shutil.move(dir_path + '/' + file, dir_path + '/' + file_date)
在运行以上代码后,可以看到现在“/home/user/documents”目录下有三个子目录,分别是“2022-11-01”、“2022-11-02”和“2022-11-03”,每个子目录中分别含有对应日期的文件。
示例2
现在有五个文件“file1.txt”、“file2.doc”、“file3.pdf”、“file4.xlsx”和“file5.ppt”,它们的修改时间依次为2022年10月31日、2022年11月1日、2022年11月2日、2022年11月3日和2022年11月4日。希望将所有修改时间在2022年11月1日以前的文件归档到“/home/user/documents/past”文件夹下,将修改时间在2022年11月1日及以后的文件归档到“/home/user/documents/current”文件夹下。
import os
import shutil
import datetime
# 目录路径
dir_path = '/home/user/documents'
# 获取目录下的文件列表
file_list = ['file1.txt', 'file2.doc', 'file3.pdf', 'file4.xlsx', 'file5.ppt']
# 获取当天日期
today = datetime.datetime.now().strftime('%Y-%m-%d')
# 遍历文件列表,创建对应日期文件夹
for file in file_list:
# 获取文件的修改时间
modified_time = os.path.getmtime(dir_path + '/' + file)
# 将修改时间转换为字符串格式
file_date = datetime.datetime.fromtimestamp(modified_time).strftime('%Y-%m-%d')
if file_date < today:
# 创建过去日期文件夹
os.makedirs(dir_path + '/past/' + file_date, exist_ok=True)
else:
# 创建当前日期文件夹
os.makedirs(dir_path + '/current/' + file_date, exist_ok=True)
# 遍历文件列表,将文件移动到对应日期文件夹中
for file in file_list:
# 获取文件的修改时间
modified_time = os.path.getmtime(dir_path + '/' + file)
# 将修改时间转换为字符串格式
file_date = datetime.datetime.fromtimestamp(modified_time).strftime('%Y-%m-%d')
if file_date < today:
# 移动文件到过去日期文件夹中
shutil.move(dir_path + '/' + file, dir_path + '/past/' + file_date)
else:
# 移动文件到当前日期文件夹中
shutil.move(dir_path + '/' + file, dir_path + '/current/' + file_date)
在运行以上代码后,可以看到现在“/home/user/documents”目录下有两个子目录,“past”和“current”,每个子目录中分别含有对应日期的文件。其中,“past”目录中含有修改时间早于2022年11月1日的文件,而“current”目录中则含有修改时间在2022年11月1日及以后的文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现按日期归档文件 - Python技术站