Python 同一文件夹目录存储大量文件优化方法

Python中,在目录中存放文件时,在同一目录中存储大量文件可能会导致文件系统性能下降,因为操作系统需要维护目录结构,并且文件查找变得缓慢。可能会导致文件名冲突,覆盖或丢失文件。 随着文件数量的增加,难以管理和维护文件。查找特定文件变得困难。本文主要介绍Python中 同一目录存储大量文件优化方法,以及相关的示例代码。

1、使用子目录优化

将文件分组存储在子目录中,以避免在同一目录中拥有大量文件。例如,按照日期、类别或其他逻辑创建子目录。

例如,

import time
import os

#获得当前系统时间的字符串
localtime=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))

#系统当前时间年份
year=time.strftime('%Y',time.localtime(time.time()))
#月份
month=time.strftime('%m',time.localtime(time.time()))
#日期
day=time.strftime('%d',time.localtime(time.time()))
#具体时间 小时分钟毫秒
mdhms=time.strftime('%m%d%H%M%S',time.localtime(time.time()))

parentDir = os.getcwd()+'/images';
if not os.path.exists(parentDir):
    os.mkdir(parentDir)  
    
fileYear=parentDir+'/'+year
fileMonth=fileYear+'/'+month
fileDay=fileMonth+'/'+day

if not os.path.exists(fileYear):
    os.mkdir(fileYear)
    os.mkdir(fileMonth)
    os.mkdir(fileDay)
else:
    if not os.path.exists(fileMonth):
        os.mkdir(fileMonth)
        os.mkdir(fileDay)
    else:
        if not os.path.exists(fileDay):
            os.mkdir(fileDay) 
print(fileDay)
filePath = fileDay + "/"+"fileName.txt"
print(filePath)
with open(filePath,"w") as f:
    f.write("url = https://www.cjavapy.com")
print("文件内容:" + os.popen("cat "+filePath).read())

2、定期清理文件

定期清理不再需要的文件,达到优化的目的。代码如下,

import os
import datetime

def clean_directory(directory, days_to_keep):
    # 获取当前日期
    current_date = datetime.datetime.now()
    
    try:
        # 遍历指定目录中的所有文件和子目录
        for root, dirs, files in os.walk(directory):
            for file in files:
                # 获取文件的完整路径
                file_path = os.path.join(root, file)
                
                # 获取文件的修改时间
                file_mtime = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
                
                # 计算文件的存储天数
                days_difference = (current_date - file_mtime).days
                
                # 如果文件存储的天数超过指定的天数限制,就删除该文件
                if days_difference > days_to_keep:
                    os.remove(file_path)
                    print(f"Deleted file: {file_path}")
    
    except Exception as e:
        print(f"An error occurred: {str(e)}")

# 指定要清理的目录和保留的天数限制
directory_to_clean = "/path/to/your/directory"
days_to_keep = 15

# 调用清理函数
clean_directory(directory_to_clean, days_to_keep)

推荐阅读
cjavapy编程之路首页