Flask后端开发(二) - 功能实现和项目总结

news/2024/10/18 3:24:39/

目录

    • 1. 功能1:修改文件参数值
      • 1.1. 获取网页端传参
      • 1.2. 读取文件
        • 1.2.1. 一般文件读取方式
        • 1.2.2. 特殊文件 —— mlx文件
        • 1.2.3. 特殊文件 —— .xlx文件
      • 1.3. 查找数据修改位置,替换数据
    • 2. 功能2:读取结果数据
      • 2.1. 实时数据展示如何存储相关数据?
      • 2.2. 读取相关数据,整理、打包、传递
        • 2.2.1. 读取.mat文件
        • 2.2.2. 读取.xlsx文件
        • 2.2.3. 读取.txt/.log文件
    • 3. 功能3:运行liunx命令行
      • 3.1. 远程连接服务器
      • 3.2. 执行liunx命令
      • 3.3. 多线程执行
      • 3.4. 实时读取liunx命令的输出数据
      • 3.5. 随时终止liunx命令的执行
    • 4. 其他收获
      • 4.1. 异常处理
      • 4.2 日志生成
      • 4.3 环境部署
      • 4.4. vscode远程连接服务器
    • 5. 项目感受
    • 6. 后记

前情回顾
Flask后端开发(一)-基础知识和前期准备

1. 功能1:修改文件参数值

针对文件参数值的修改,具体流程如下:

  • 前端接收用户修改的数据,传递给后端;
  • 后端接口接收数据之后,读取对应文件;
  • 定位修改位置,替换数据;
  • 返回修改结果给前端。

1.1. 获取网页端传参

前端传递参数的方式有两种,一种是GET,一种是POST,具体可参考Flask后端开发(一)-基础知识和前期准备

后端接收数据主要使用flask中的request模块,具体代码如下:

#包导入
from flask import request#前后端协商好传递数据的名称之后,后端根据参数名进行接收
if request.method == "POST":userID= str(request.form.get("userID"))
elif request.method == "GET":userID= str(request.args.get("userID"))#如果需要额外处理,例如字符串"a,b,c"需要转换为列表["a","b","c"],可以使用split函数
BSD= (request.form.get("BSD")).split(",")#注:上述是代码片段,而非完整代码,一般后端接收数据写在接口函数中

1.2. 读取文件

1.2.1. 一般文件读取方式

一般文件包括.txt.c.log等文件,其内容读取主要使用python中file模块的open函数,具体代码如下:


path= "文件路径"
with open(path, "r",encoding='utf8') as file:file_content = file.read()
#整个文件内容存储在file_content中

关于file模块的具体使用,可参考我的这篇博客:【python技巧】文本文件的读写操作。

1.2.2. 特殊文件 —— mlx文件

本项目的一个特殊之处就是需要处理.mlx文件(实时脚本文件),这是matlab中的一种文件格式,其内容是二进制的,无法直接读取。因此,在本文当中,解决方案是将.mlx文件手动转换为.m文件,然后再读取.m文件的内容(真的很笨蛋,但是有效)。
对于.m文件,则可以按照一般文件的读取方式进行读取。

1.2.3. 特殊文件 —— .xlx文件

本项目中还会涉及到表格文件的数据读写,这里使用的是xlrd模块,具体代码如下:

#包导入
import xlrd#查找对应文件内容
file_path="文件路径"
#打开表格
wb = xlrd.open_workbook(file_path)
ws = wb.sheet_by_name('Sheet1')
#按行读取,返回给前端一个行列表:
n_rows = ws.nrows#获取行数
for i in range(2,n_rows):#按行读取,进行筛选,第一行是表头,第二行开始是数据get_value=ws.cell(i,3).value#获取第i行第3列的数据

1.3. 查找数据修改位置,替换数据

本项目的需求是修改文件中的对应参数,涉及很多代码行的参数修改,因此,需要根据变量名查找相关位置。

  1. 定位
    根据pytho字符串中的find函数查找变量名所在的位置,参考博客如下Python find()方法,具体代码如下:
# 其中file_content是文件内容,变量名是需要查找的变量名
## 1. 调度类型start_index_1 = file_content.find("simParameters.SchedulingType =")end_index_1 = file_content.find("simParameters.NumUEs =",start_index_1,)  # 这之间修改schedulingtype的取值## 2. UESpeedstart_index_2 = file_content.find("simParameters.UESpeed =", end_index_1)end_index_2 = file_content.find("% Validate the UE positions",start_index_2,)## 3. max_RBstart_index_3 = file_content.find("simParameters.NumRBs =", end_index_2)end_index_3 = file_content.find("simParameters.SCS =",start_index_3,) ## 4. SCSstart_index_4 = file_content.find("simParameters.SCS =", end_index_3)end_index_4 = file_content.find("simParameters.DLCarrierFreq =",start_index_4,)

这部分的下标定位情况,可参考我的此篇博客:【python技巧】替换文件中的某几行

  1. 替换
    在本项目中使用的全文替换,具体代码结构如下:
# 1. 读取文件
path = "文件路径"
with open(path, "r",encoding='utf-8') as file:
file_content = file.read()# 2. 定位
start_index_1 = file_content.find("simParameters.UEPosition =")
end_index_1 = file_content.find("simParameters.UESpeed =",start_index_1)  # 这之间修改ue_position的取值
start_index_2 = file_content.find("simParameters.Position = ", end_index_1)
end_index_2 = file_content.find("csirsConfig = nrCSIRSConfig", start_index_2)if (start_index_1 == -1 or end_index_1 == 

http://www.ppmy.cn/news/1185658.html

相关文章

550MW发电机变压器组继电保护的整定计算及仿真

摘要 电力系统继电保护设计是根据系统接线图及要求选择保护方式,进行整定计算,电力系统继电保护的设计与配置是否合理直接影响到电力系统的安全运行。如果设计与配置不当,保护将不能正确工作,会扩大事故停电范围,造成…

MySQL数据库干货_07—— MySQL中的约束

MySQL中的约束 本专栏从本篇开始正式介绍MySQL中的约束内容,这是关系型数据库的一个重点,在接下来的几篇博文中我会详细介绍每种约束,包括概念,创建方式,应用场景等等,希望小伙伴们关注!约束概…

深度强化学习用于博弈类游戏-基础测试与说明【1】

深度强化学习用于博弈类游戏-基础【1】 1. 强化学习方法2. 强化学习在LOL中的应⽤2.1 环境搭建2.2 游戏特征元素提取1)小地图人物位置:2)人物血量等信息3)在整个图像上寻找小兵、防御塔的位置4)自编码器提取3. 策略梯度算法简介参考资料1. 强化学习方法 伴随着人工智能的潮起…

springboot--基本特性--自定义 Banner

SpringApplication的使用 前言效果1.1 自定义banner1.2 自定义SpringApplication配置文件优先级高于程序化调整的优先级启动自定义banner关闭自定义banner 1.3 FluentBuilder API 前言 修改启动时候的修改banner 效果 1.1 自定义banner banner制定官网链接 在配置文件中设置…

【数据结构】 队列详解!庖丁解牛般细致讲解!

🎥 屿小夏 : 个人主页 🔥个人专栏 : 数据结构解析 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言🌤️队列的概念剖析☁️什么是队列☁️队列的特性☁️队列的图解 &#x1…

Power BI 傻瓜入门 17. 共享和Power BI工作区

本章内容包括: 设置与Power BI服务的共享和协作使用监控和性能工具加快业务运营通过查看数据联机排除数据故障 在经历了跨数据源的整个数据生命周期、构建可视化、了解DAX和发布报告之后,作为power BI的高级用户,您的下一步是与业务中的所有…

C语言KR圣经笔记 2.8自增和自减 2.9位运算 2.10赋值

2.8 自增和自减操作符 C提供了两个不同寻常的操作符,用于对变量进行自增和自减。自增操作符对操作数加上1,而自减操作符 -- 对操作数减去1。我们已经频繁使用 对变量进行自增,如: if (c \n)nl; 不寻常之处在于 和 -- 既能用作…

2023年中国冷风机分类、销量及市场规模分析[图]

冷风机通常是指一种设备,用于通过冷却空气来调节室内或工业环境的温度。这些设备通过循环空气并通过冷却元件(如冷却盘或冷凝器)来降低空气的温度,从而实现温度控制。冷风机在家庭、商业和工业领域都有广泛的应用,可以…