[网站搭建]动态文件路径管理方案:告别硬编码,实现自动化用户数据切换

引言

在开发数据分析系统时,我们经常会遇到这样的问题:每次新增用户数据都需要手动修改代码中的文件路径。本文将分享一个实际项目中的解决方案,通过动态文件路径管理,实现了多用户数据的自动识别和切换。

问题背景

原系统中的文件路径是硬编码的:

复制代码
STATS_FILE = r'D:/network/stats2.txt'
HR_FILE = r'D:/network/hr2.txt'

每次采集不同用户的数据后,都需要手动修改这些路径才能查看对应数据,效率极低且容易出错。

解决方案架构

我们采用前后端协同的方案来解决这个问题:

后端实现

1. 动态文件路径生成

复制代码
def get_file_paths(user_tag=None):
    """根据用户标签动态生成文件路径"""
    if user_tag:
        base_dir = os.path.dirname(os.path.abspath(__file__))
        stats_file = os.path.join(base_dir, f"{user_tag}_stats2.txt")
        hr_file = os.path.join(base_dir, f"{user_tag}_hr2.txt")
        
        if os.path.exists(stats_file) and os.path.exists(hr_file):
            return stats_file, hr_file
    
    return DEFAULT_STATS_FILE, DEFAULT_HR_FILE

2. 用户列表自动发现

复制代码
def get_available_users():
    """获取所有可用的用户数据文件"""
    base_dir = os.path.dirname(os.path.abspath(__file__))
    users = []
    
    for filename in os.listdir(base_dir):
        if filename.endswith('_stats2.txt'):
            user_tag = filename.replace('_stats2.txt', '')
            hr_file = os.path.join(base_dir, f"{user_tag}_hr2.txt")
            if os.path.exists(hr_file):
                users.append(user_tag)
    
    return sorted(users)

3. 新增API端点

端点 方法 描述
/get_users GET 获取所有可用用户列表
/get_stats GET 获取指定用户数据

前端实现

1. 用户选择器UI

复制代码
<span style="margin-left:20px;">
    数据用户:
    <select id="user_selector">
        <option value="">默认用户</option>
    </select>
</span>

2. 动态加载用户列表

复制代码
function initUserSelector() {
    fetch('http://127.0.0.1:5002/get_users')
        .then(res => res.json())
        .then(data => {
            const userSelector = document.getElementById('user_selector');
            data.users.forEach(user => {
                userSelector.innerHTML += `<option value="${user}">${user}</option>`;
            });
        });
}

3. 数据动态加载

复制代码
document.getElementById('load_stats_btn').onclick = function() {
    const selectedUser = document.getElementById('user_selector').value;
    const url = selectedUser ? 
        `http://127.0.0.1:5002/get_stats?user=${encodeURIComponent(selectedUser)}` : 
        'http://127.0.0.1:5002/get_stats';
    
    fetch(url)
        .then(res => res.json())
        .then(data => {
            // 更新图表和表格
        });
};

文件命名规范

系统会自动识别符合以下规则的文件:

复制代码
{用户标签}_stats2.txt
{用户标签}_hr2.txt

建议用户标签格式:机构_姓名_ID

示例:

  • www_z_002_stats2.txt

  • www_z_002_hr2.txt

相关推荐
2601_963282771 小时前
极寒专网技术拆解:黑龙江零下 40℃场景数字对讲组网全方案|黑龙江移远科技寒地通信底层技术解析
运维·网络·人工智能·科技
LedgerNinja2 小时前
WEEX API 稳定性实战:限频、重试与风控的工程化清单
运维·区块链
ZJH__GO2 小时前
网络编程v2--多客户端互通
java·运维·服务器·开发语言·计算机网络
Meya11272 小时前
实时采集 + 全域可视化,打造跨站点机房一体化U位管理方案
大数据·运维·人工智能
Gofarlic_OMS2 小时前
NX浮动许可调度黑名单机制,对比两款谁更合理
java·大数据·运维·开源·制造
三言老师2 小时前
CentOS7.9:Redis服务器部署结构化实战教程
linux·运维·服务器·数据库
這花開嗎3 小时前
2026年TTS文字转语音API哪家强?批量自动化配音成本与技术实测
python·flask·自动化
祉猷并茂,雯华若锦4 小时前
Win下完美解决Allure报错,生成Web自动化测试报告
android·python·selenium·自动化
tiannian12204 小时前
RFID资产管理系统投入产出全拆解:硬件、软件、部署、运维四笔账一次算清
运维·rfid·资产管理系统
我头发多我先学4 小时前
Linux入门:简要认识Linux和基础指令
linux·运维·服务器