Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶图像无法上载(FileNotFoundError:[Errno 2]没有此类文件或目录)_Python_Python 3.x_Flask - Fatal编程技术网

Python 烧瓶图像无法上载(FileNotFoundError:[Errno 2]没有此类文件或目录)

Python 烧瓶图像无法上载(FileNotFoundError:[Errno 2]没有此类文件或目录),python,python-3.x,flask,Python,Python 3.x,Flask,您好,我正在编写博客脚本,但get-FileNotFound错误。 Python代码: @app.route('/upload',methods=['POST']) def upload(): title = request.form['title'] context = request.form['text'] author = request.form['author'] img=request.files['img'] path = os.path.

您好,我正在编写博客脚本,但get-FileNotFound错误。 Python代码:

@app.route('/upload',methods=['POST'])
def upload():
    title = request.form['title']
    context = request.form['text']
    author = request.form['author']
    img=request.files['img']
    path = os.path.join(app.root_path,'/images',img.filename)
    img.save(path)

    new=Posts(title=title,context=context,image=path,author=author)
    db.session.add(new)
    db.session.commit()

    return redirect(url_for('blog'))

错误:

img.save(path)
  File "/home/coderrpy/.virtualenvs/python/lib/python3.8/site-packages/werkzeug/datastructures.py", line 3066, in save
    dst = open(dst, "wb")
FileNotFoundError: [Errno 2] No such file or directory: '/images/images.jpeg'
我从来没有收到过这样的错误,我不知道为什么


请帮助我

根据您共享的代码,我相信您上传了一张图像并将其保存在一个文件夹中

问题似乎是从文档os.path生成路径的方式

智能地连接一个或多个路径组件。返回值为 path和*路径的任何成员与恰好一个路径的串联 除最后一部分外,每个非空部分后面的目录分隔符, 这意味着如果最后一部分 是空的。如果零部件是绝对路径,则所有以前的零部件 被丢弃,并从绝对路径继续连接 组成部分

要实现这一点,您可以通过这种方式定义路径

 path = os.path.join(app.root_path,'/images',img.filename)
另外,如果您通过Flask上传文件,您可能需要采取更多步骤来保持文件的完整性,这可能会有所帮助

作为

您可能只需要从
/images
中删除前面的
/
,这可能是在欺骗
.join()

导入操作系统 >>>join(“/foo”和“/bar”) “/酒吧” >>>join(“/foo”,“bar”) “/foo/bar” 我还建议使用which,它的行为应该类似,但是对于您将遇到的任何路径异常(例如空格和分隔符),它会更聪明一些,使用逻辑
Path
对象而不是普通字符串

导入路径库 >>>Path(“/foo”、“bar”、“filename”) PosixPath('/foo/bar/filename')
/images
中删除
/
,仅保留
图像