首页 > 系统相关 >python项目开发——总结笔记(csv excel读取 服务端端口进程 拟合预测 时间格式转化 服务端程序维护)

python项目开发——总结笔记(csv excel读取 服务端端口进程 拟合预测 时间格式转化 服务端程序维护)

时间:2024-03-14 22:29:40浏览次数:26  
标签:python list excel result time msg import data 服务端

目录

部署服务端程序

主服务端控制程序main.py

子目录的计算程序 jisuan.py

读取数据

读取csv数据读取

读取excel

时间格式转换

时间戳转datetime并且生成时间序列最后格式化时间

 常用函数

拟合预测

服务端程序控制与维护


部署服务端程序

主服务端控制程序main.py

from flask import Flask, request, jsonify, make_response
from flask_cors import *
from pydantic import BaseModel
# utils为本目录的一个文件夹名,utils文件夹中有jisuan.py文件,搞个简称js
import utils.jisuan as js
import sys

# 支持并发访问,保证计算过程不报错的一些定义,不必纠结
sys.setrecursionlimit(100000) #设置递归深度
app = Flask(__name__)
class Data(BaseModel):
    path: str
    data: list
app = Flask(__name__)
CORS(app)

# 发生错误,返回给前端的格式,需要与前端设计一起考虑
def wrong(cause):
    msg = {}
    msg['msg'] = cause
    msg['code'] = 500
    data = {}
    data['data'] = "0"
    data['msg'] = msg
    return data

# 前端发送请求的接口名,需要与函数名一致
@app.post("/jisuan1")
async def jisuan1():
    # 接受文件
    try:
        file_obj = request.files['file']
    except:
        return wrong("文件上传失败")
    # 接受对象数据
    try:
        receive = request.json
    except:
        return wrong("数据接受失败")
    #给子js文件的daoru函数发送接收到的文件,接受返回内容
    try:
        result = js.daoru(file_obj)
    except Exception as e:
        print(e)
        return wrong("文件处理出错")
    #发送对象数据
    try:
        result = js.yunsuan(receive)
    except Exception as e:
        print(e)
        return wrong(e)
    #成功的返回格式
    msg = {}
    msg['msg'] = "成功"
    msg['code'] = 200
    data = {}
    data['data'] = result
    data['msg'] = msg
    return data

# 在8765端口等候,0.0.0.0 处理所有地址来的请求
if __name__ == '__main__':
    app.run(host='0.0.0.0',port=8765)

子目录的计算程序 jisuan.py


def daoru(file_obj):

    return 1

def yunsuan(data):

    return 1

读取数据

读取csv数据读取

import csv

def get_data():
    file_path = 'C:\\Users\\1.csv' 
    
    result ={}
    result['时间'] = [] #对象中创建名为name,值为空列表的键值对
    result['值'] = []

    with open(file_path, 'r') as file:  
        reader = csv.reader(file)  

        for values in reader:  
            values[0].split(" ") //读取csv的第一行
            # 假设第一列为时间,进行格式转换
            time_obj = datetime.strptime(values[0][0], " %Y/%m/%d-%H:%M")
            result['时间'].append(time_obj)
            result['值'].append(float(values[0][1]))
    return result

读取excel

import pandas as pd

def daoru(file_obj):
    
    #忽略异常,不必纠结
    warnings.simplefilter(action='ignore', category=FutureWarning)

    data = pd.read_excel(file_obj)
    # 用0填充空值
    data.fillna(0, inplace=True)

    #选择第六列的所有元素,转化成数列
    数值1 = list(data.iloc[:, 5])

    result = {}
    result['数值1'] = 数值1[:]
    #转化成对象返回
    return result

时间格式转换

时间戳转datetime并且生成时间序列最后格式化时间

import time
from datetime import datetime
import datetime as dt
时间戳 = 1710080000
time_list = []
# 把时间戳转成datetime格式
date = time.localtime(int(时间戳))
date_time = datetime(*date[:6])
time_list.append(date_time)
后一个时间比前一个时间晚一个小时
for i in range(10):
    time_list.append(time_list[i] + dt.timedelta(minutes=60))
for i in range(11):
#格式化时间
    time_list[i] = time_list[i].strftime('%Y-%m-%d %H')
print(time_list)

 常用函数

四舍五入 round(2.7026,1)

平方 pow(10,2)  更可靠方式 numpy.power(10, 0.32)

添加数列元素 list_a.append(1)

生成pai   math.pi

拟合预测

import numpy as np

拟合列表 = [1,2,2.5,3,2.8,2.6,2.4,2.3]

# 生成自然数列表
x_拟合 = list(range(0,8))
x_预测 = list(range(0,20))

# 拟合度预告,拟合效果越好,预测效果越差
拟合度 = 2

# x与y要长度一致
p1 = np.poly1d(np.polyfit(x_拟合,拟合列表, 拟合度))

预测列表 = list(p1(x_预测))

服务端程序控制与维护

进入到main文件目录

netstat -lnp|grep 8765 查看占用8765端口的进程

sudo kill -9 13990  杀死这个进程

python3 main.py 重启服务端main程序

 由于flask框架长时间运行会自己中断,我写了一个程序,让他每隔一段时间重新启动,实现永远不会掉线,在此分享

nohup python3 -u keep.py > nohup.log 2>&1 &
目录中创建一个keep.py文件,再创建一个写入日志的nohup.log文件


# 只是重复了上面的手动关闭,开启过程,不必修改

import time
import subprocess
import re
import os
import psutil
def job():
    # 进程名称python3 
    # 当前进程pid
    # print("dance:", os.getpid())
    with open('keep.txt', 'w') as f:
        f.write(str(os.getpid()))
    # 当前进程名称
    # print(psutil.Process().name())

    os.system("nohup python3 -u main.py > /root/1.log 2>&1 &")
    print("开启")
    time.sleep(60*60*3)
    command = "netstat -lnp|grep 8765"
    output = subprocess.check_output(command, shell=True, universal_newlines=True)
    print(output)
    match = re.search(r'LISTEN\s+(\d+)/python', output)

    if match:
        number = int(match.group(1))
        # print("获取pid: " + str(number))

    os.system("sudo kill -9 %d" % number)
    print("杀死了")
    # time.sleep(7)



while True:
    job()

标签:python,list,excel,result,time,msg,import,data,服务端
From: https://blog.csdn.net/qq_46444918/article/details/136722003

相关文章

  • 【二分法】分巧克力问题/python
    1.看出是用二分法:最大值最小化,最小值最大化,满足条件的最值,用二分法做。2.确定low,high,确定check的条件3.注意: 是当low<high的时候进行循环,当相等或大于的时候输出,while的条件不能写错。 本题是在区间里面找满足条件的最大值,所以,在算mid的时候面对取整的问题让它向大......
  • python post测试
    pythonpost测试 importrequests#设置请求的URLurl='http://example.com/api/post'#准备要发送的数据,这里假设有一个中文字段'name'data={'name':'张三',#中文名字'age':30}#发送POST请求,指定headers中的Content-Type为applica......
  • Python学习随记(二)
    Python学习随记(二)print函数#hello,aworld为print函数所输出测内容,sep='|'中表示使用|替换为输出内容间原本的空格,#end=''使用空格替换print函数结尾原本的换行符print("hello","aworld",sep='|',end='')#检测多行注释是否为字符串print(&......
  • python下载win32gui的库失败解决教程
    1、进入这个网站https://www.lfd.uci.edu/~gohlke/pythonlibs/界面如下:因为这些安装包都是按照字母顺序排序的,所以就向下翻到pywin32的位置就行;选择跟自己的python版本相对应的这个库的版本,点击即可下载;等待下载完成:2、进入到pycharm软件里面,运用命令实现库的安装python-......
  • 使用EasyExcel读取Excel文件遇到的小问题
    没有读取到内容的问题excel内容具体代码importcom.alibaba.excel.EasyExcel;importcom.alibaba.excel.annotation.ExcelProperty;importjava.io.File;importjava.util.List;publicclassTestEasyExcel{publicstaticvoidmain(String[]args){Lis......
  • 初识python
    师从黑马程序员字面量python中常用的6种数据的类型通过三对引号进行注释,例: """hellowrold"""数据类型使用type查看数据类型name="黑马"name_type=type(name)print(name_type)类型转化 运算符print("5/2=",5/2)print("5//2=",5//2)print("2......
  • 【SpringBoot】自定义工具类实现Excel数据新建表存入MySQL数据库
    ......
  • 有手就会Python自定义模块使用
    1.自定义模块自定义模块一般是在项目中根据自己的需求进行的封装项目中自定义了额一个模块,module.pyname="张三"age=23weight=160height=187deftest():print("测试的方法")defdemo():print("天使的眼泪")deffn():print("老鼠爱大米")2.......
  • Excel的几点运用#高级筛选#IFNA#VLOOKUP
    高级筛选应用场景:今天导员发了一个excel表格,内容是整个学院的学生名单,而且是乱序的,没有专业班级的信息,现在老师要求我们去完善表格中的邮箱这一项。然而,在那么多的数据中去找到自己的名字还是比较费时费眼睛的,所以我想要从中筛选出我们班级的同学信息,以便班内同学找到自己的名字......
  • Python使用RocketMQ(消息队列)
    消息队列在日常开发中比较常用的开发中间件,每家大厂一般都会具有自己的消息队列服务器。本文主要讲述Python中如何使用RocketMQ的相关SDK。希望大家在阅读本文前可以先了解一下RocketMQ的基本知识。使用 pipinstallrocketmq-ihttps://pypi.tuna.tsinghua.edu.cn/sim......