如何将`to csv`保存在`os.path.join`中,并将其发送到另一个路径以下载回python中

如何将`to csv`保存在`os.path.join`中,并将其发送到另一个路径以下载回python中,python,csv,flask,path,Python,Csv,Flask,Path,该系统将上传一个csv文件用于预测,并将预测结果转换为新的csv文件。之后,用户可以从HTML页面中的下载按钮下载csv文件,但我无法将我的加入到os.path.join并返回HTML页面中的csv文件fromsend\u from directory,有人擅长python吗,请纠正我~谢谢你的帮助 @app.route('/transform', methods=["POST"]) def transform_view(): if request.method == 'P

该系统将上传一个csv文件用于预测,并将预测结果转换为新的csv文件。之后,用户可以从HTML页面中的
下载按钮下载csv文件,但我无法将我的
加入到
os.path.join
并返回HTML页面中的
csv文件
from
send\u from directory
,有人擅长python吗,请纠正我~谢谢你的帮助

@app.route('/transform', methods=["POST"])
def transform_view():
 if request.method == 'POST':
        f = request.files['data_file']
        if not f:
            return "No file"

        
        stream = io.StringIO(f.stream.read().decode("UTF8"), newline=None)
        csv_input = csv.reader(stream)
        stream.seek(0)
        result = stream.read()
        df = pd.read_csv(StringIO(result), usecols=[1])
        
        #extract month value
        df2 = pd.read_csv(StringIO(result))
        matrix2 = df2[df2.columns[0]].to_numpy()
        list1 = matrix2.tolist()
         
        # load the model from disk
        model = load_model('model.h5')
        dataset = df.values
        dataset = dataset.astype('float32')
        scaler = MinMaxScaler(feature_range=(0, 1))
        dataset = scaler.fit_transform(dataset)
        look_back = 1
        dataset_look = create_dataset(dataset, look_back)
        dataset_look = np.reshape(dataset_look, (dataset_look.shape[0], 1, dataset_look.shape[1]))
        predict = model.predict(dataset_look)
        transform = scaler.inverse_transform(predict)

        X_FUTURE = 12
        transform = np.array([])
        last = dataset[-1]
        for i in range(X_FUTURE):
            curr_prediction = model.predict(np.array([last]).reshape(1, look_back, 1))
            last = np.concatenate([last[1:], curr_prediction.reshape(-1)])
            transform = np.concatenate([transform, curr_prediction[0]])
      
        transform = scaler.inverse_transform([transform])[0]

        dicts = []
        curr_date = pd.to_datetime(list1[-1])
        for i in range(X_FUTURE):
            curr_date = curr_date +  relativedelta(months=+1)
            dicts.append({'Predictions': transform[i], "Month": curr_date})
            

        new_data = pd.DataFrame(dicts).set_index("Month")
        ##df_predict = pd.DataFrame(transform, columns=["predicted value"])

        new_data.to_csv(os.path.join("downloads", index = True, encoding='utf8'))

        labels = [d['Month'] for d in dicts]
            
        values = [d['Predictions'] for d in dicts]

        colors = [ "#F7464A", "#46BFBD", "#FDB45C", "#FEDCBA",
                       "#ABCDEF", "#DDDDDD", "#ABCABC", "#4169E1",
                       "#C71585", "#FF4500", "#FEDCBA", "#46BFBD"]

        line_labels=labels
        line_values=values
        return render_template('graph.html', title='Time Series Sales forecasting', max=17000, labels=line_labels, values=line_values, filename = filename)

@app.route('/download/<filename>')
def download(filename):
    return send_from_directory("downloads", filename, as_attachment = True)
@app.route('/transform',methods=[“POST”])
def transform_view():
如果request.method==“POST”:
f=请求.files['data_file']
如果不是f:
返回“无文件”
stream=io.StringIO(f.stream.read().decode(“UTF8”),换行符=None)
csv\u输入=csv.reader(流)
stream.seek(0)
结果=stream.read()
df=pd.read\u csv(StringIO(结果),usecols=[1])
#提取月值
df2=pd.read\U csv(字符串(结果))
matrix2=df2[df2.columns[0]]to_numpy()
list1=matrix2.tolist()
#从磁盘加载模型
模型=负荷\模型('model.h5'))
数据集=df.values
dataset=dataset.astype('float32')
scaler=MinMaxScaler(功能范围=(0,1))
dataset=scaler.fit_变换(dataset)
回头看=1
dataset\u look=创建\u数据集(dataset,look\u back)
dataset_look=np.Reformate(dataset_look,(dataset_look.shape[0],1,dataset_look.shape[1]))
predict=model.predict(数据集\u外观)
变换=定标器。逆变换(预测)
X_未来=12
transform=np.array([])
last=数据集[-1]
对于范围内的i(X_未来):
curr_prediction=model.predict(np.array([last])。重塑(1,look_back,1))
last=np.concatenate([last[1:],curr\u prediction.reformate(-1)])
transform=np.连接([transform,curr\u prediction[0]]))
变换=定标器。逆变换([transform])[0]
dicts=[]
curr\u date=pd.to\u datetime(列表1[-1])
对于范围内的i(X_未来):
当前日期=当前日期+相对延迟(月=+1)
追加({'Predictions':transform[i],“Month”:curr_date})
新数据=pd.数据帧(dicts).设置索引(“月”)
##df_predict=pd.DataFrame(转换,列=[“预测值”])
新的到csv的数据(os.path.join(“下载”,index=True,encoding='utf8'))
标签=[d['Month']表示dicts中的d]
数值=[d['predicts']表示dicts中的d]
颜色=[“F7464A”、“46BFBD”、“FDB45C”、“FEDCBA”,
“ABCDEF”、“DDDD”、“ABCABC”、“4169E1”,
“C71585”、“FF4500”、“FEDCBA”、“46BFBD”]
line_标签=标签
行_值=值
返回渲染模板('graph.html',title='Time Series Sales forecasting',max=17000,labels=line\u labels,values=line\u values,filename=filename)
@app.route(“/download/”)
def下载(文件名):
从_目录返回发送_(“下载”,文件名,如_attachment=True)
#HTML页面


<a href="{{ url_for('download', filename=filename) }}">Download</a>