用Python實(shí)現(xiàn)根據(jù)時(shí)間交叉重疊查找文件的實(shí)用功能
程序支持輸入一個(gè)時(shí)間范圍,并對(duì)一些文件進(jìn)行查找,根據(jù)每個(gè)文件的創(chuàng)建時(shí)間和最后更新時(shí)間,判斷這個(gè)輸入的時(shí)間范圍在時(shí)間上是否與某些文件的創(chuàng)建時(shí)間和最后更新時(shí)間有所交叉重疊,找出存在時(shí)間交叉重疊的文件,并列出這些文件名和創(chuàng)建時(shí)間及最后更新時(shí)間。
import os
import datetime
def find_files(start_dir, start_time, end_time):
? ?for root, dirs, files in os.walk(start_dir):
? ? ? ?for filename in files:
? ? ? ? ? ?file_path = os.path.join(root, filename)
? ? ? ? ? ?creation_time = datetime.datetime.fromtimestamp(os.path.getctime(file_path))
? ? ? ? ? ?modified_time = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
? ? ? ? ? ?if start_time <= creation_time <= end_time or start_time <= modified_time <= end_time:
? ? ? ? ? ? ? ?print(f"{filename}\nCreation Time: {creation_time}\nModified Time: {modified_time}\n")
if __name__ == '__main__':
? ?start_dir = input("請(qǐng)輸入需要查找的文件夾路徑:")
? ?start_time = input("請(qǐng)輸入起始時(shí)間(格式為yyyy-mm-dd HH:MM:SS):")
? ?end_time = input("請(qǐng)輸入結(jié)束時(shí)間(格式為yyyy-mm-dd HH:MM:SS):")
? ?start_time = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
? ?end_time = datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S")
? ?find_files(start_dir, start_time, end_time)
該程序使用 os
模塊來(lái)遍歷指定文件夾及其子文件夾中的文件,獲取每個(gè)文件的創(chuàng)建時(shí)間和最后修改時(shí)間,并與用戶輸入的時(shí)間范圍進(jìn)行比較。如果某個(gè)文件的創(chuàng)建時(shí)間或最后修改時(shí)間在輸入的時(shí)間范圍內(nèi),則認(rèn)為該文件與時(shí)間范圍有交叉重疊,將該文件的信息輸出到控制臺(tái)。
下面是一個(gè)使用示例:
請(qǐng)輸入需要查找的文件夾路徑:C:\Users\username\Desktop\test
請(qǐng)輸入起始時(shí)間(格式為yyyy-mm-dd HH:MM:SS):2022-01-01 00:00:00
請(qǐng)輸入結(jié)束時(shí)間(格式為yyyy-mm-dd HH:MM:SS):2022-12-31 23:59:59
file1.txt
Creation Time: 2022-03-15 10:05:23
Modified Time: 2022-05-01 14:30:12
file2.docx
Creation Time: 2022-08-10 15:20:05
Modified Time: 2022-09-20 11:40:28
在這個(gè)例子中,程序搜索了文件夾 C:\Users\username\Desktop\test
中的所有文件,并查找了創(chuàng)建時(shí)間和最后修改時(shí)間在 2022 年內(nèi)的文件。找到了兩個(gè)文件(file1.txt
和 file2.docx
),它們的創(chuàng)建時(shí)間或修改時(shí)間在用戶指定的時(shí)間范圍內(nèi),因此它們被列出了,并輸出了它們的創(chuàng)建時(shí)間和最后修改時(shí)間。
標(biāo)簽: