IOError:[Errno2]没有这样的文件或目录:用于输入文件到烧瓶

时间:2018-04-03 11:50:57

标签: python python-2.7 api docker flask

这是一个在我的docker容器中运行的flask框架的客户端文件 。我想从我的本地文件夹C:/Users/RB287JD/Desktop/upload/file.txt

上传文件

不幸的是,烧瓶应用程序无法找到它。如果我运行它,

APP_ROOT = os.path.abspath(os.path.dirname(__file__))
UPLOAD_FOLD = '/c/Users/RB287JD/Desktop/upload/'
UPLOAD_FOLDER = os.path.join(APP_ROOT, UPLOAD_FOLD)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

class mainSessRunning():

    def __init__(self):
        host, port = FLAGS.server.split(':')
        channel = implementations.insecure_channel(host, int(port))
        self.stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)

        self.request = predict_pb2.PredictRequest()
        self.request.model_spec.name = 'modelX'
        self.request.model_spec.signature_name = 'prediction'

    def inference(self, val_x):
        data = val_x
        self.request.inputs['input'].CopyFrom(tf.contrib.util.make_tensor_proto(data))
        result = self.stub.Predict(self.request, 5.0)
        return result

run = mainSessRunning()


# Define a route for the default URL, which loads the form
@app.route('/pred', methods=['POST'])
def pred():
    f = request.files['file']
    f.save(os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(f.filename)))
    result = run.inference(f)
    rs = json_format.MessageToJson(result)
    return jsonify({'result':rs})

它抛出错误,

  
    
      

File" /usr/local/lib/python2.7/dist-packages/werkzeug/datastructures.py",       第2725行,保存               dst = open(dst,' wb')IOError:[Errno2]没有这样的文件或目录:' /c/Users/RB287JD/Desktop/upload/File.txt'

    
  

但这是我的文件存在的地方(C:\Users\RB287JD\Desktop\upload\File.txt)。

1 个答案:

答案 0 :(得分:1)

我假设你的Python程序没有从容器中看到你的主机本地目录。

您没有提供用于运行容器的dockerfile或docker命令。您需要在dockerfile中声明一个卷,并将本地目录从计算机绑定到容器卷。

您可以在此处找到有关声明卷并将其挂载的更多信息:

希望这有帮助。

BR,

韦科