繁体   English   中英

FileNotFoundError:[WinError 2] 用于 Python 中的 POST 方法

[英]FileNotFoundError: [WinError 2] for POST method in python

我正在尝试创建一个 Flask POST 方法来将文件上传到我在 python 中的 s3 Bucket:

这是我想要做的代码:

from flask import Flask, redirect, url_for,render_template, request, jsonify
import flask
import boto3
from flask_cors import CORS
import os
import pandas as pd

s3 = boto3.client('s3')
UPLOAD_FOLDER = 'path_folder'
app = flask.Flask(__name__)

app.config["DEBUG"] = False
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
CORS(app)

@app.route('/postsqlData/subsytem_upload/', methods=['POST'])
def upload_file():
    df = pd.DataFrame(os.listdir(UPLOAD_FOLDER),columns=['Paths'])
    bucket_name = "name"
    for i in range(len(df)):
       filename1 = str(df['Paths'].iloc[i])
       print(filename1)
       fileSize = os.path.getsize(filename1)
       print(fileSize)
       s3.upload_file(filename1, bucket_name,'test/{}'.format(filename1))

       print("Added")
     return "completeed"
app.run(host='0.0.0.0')

这会引发以下错误:

回溯(最近一次调用最后一次):
文件“C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\flask\\app.py”,第 2446 行,在 wsgi_app response = self.full_dispatch_request()
文件“C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\flask\\app.py”,第 1951 行,在 full_dispatch_request rv = self.handle_user_exception(e) 中
文件“C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\flask_cors\\extension.py”,第161行,在wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs)))
文件“C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\flask\\app.py”,第 1820 行,在 handle_user_exception reraise(exc_type, exc_value, tb)
文件“C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\flask_compat.py”,第 39 行,重新加注值
文件“C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\flask\\app.py”,第 1949 行,在 full_dispatch_request rv = self.dispatch_request()
文件“C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\flask\\app.py”,第 1935 行,在 dispatch_request 中返回 self.view_functionsrule.endpoint
文件“s3_test.py”,第 30 行,在 upload_file 中
文件大小 = os.path.getsize(filename1)
文件“C:\\Users\\admin\\Anaconda3\\lib\\genericpath.py”,第 50 行,在 getsize 中返回 os.stat(filename).st_size
FileNotFoundError: [WinError 2] 系统找不到指定的文件:'data.xlsx'

如果我单独运行此代码,即逐行运行。 脚本运行成功并将文件上传到 s3 bucket 。 但是,当我使用 post 方法时它不会运行它我该如何解决这个问题?

提前致谢

os.listdir(UPLOAD_FOLDER)只给你文件名,但你需要

os.path.join(UPLOAD_FOLDER, filename1)

访问文件夹UPLOAD_FOLDER中的文件

fileSize = os.path.getsize( os.path.join(UPLOAD_FOLDER, filename1) )

BTW:你不需要dataframe得到的文件名,但你可能需要full_pathupload_file()

   for filename1 in os.listdir(UPLOAD_FOLDER):
       print(filename1)

       full_path = os.path.join(UPLOAD_FOLDER, filename1)
       print(full_path)

       fileSize = os.path.getsize( full_path )
       print(fileSize)

       s3.upload_file( full_path , bucket_name,'test/{}'.format(filename1))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM