繁体   English   中英

使用逗号时,except 处理程序中的语法无效 (SyntaxError)

[英]Invalid syntax (SyntaxError) in except handler when using comma

我有这段代码:

@app.route('/login/', methods=['GET', 'POST'])
def login():
    error = None
    if request.method == 'POST':
        session['username'] = request.form['username']
        session['password'] = request.form['password']
        try:
            # use reddit_api's login
            r.login(user=session['username'], password=session['password'])
        except InvalidUserPass, e:
            error = 'Incorrect username or password. '
        if not error:
            subreddits = r.user.get_my_reddits(limit=25)
            my_reddits = []
            for i in range(25):
                my_reddits.append(subreddits.next().display_name)
            session['my_reddits'] = my_reddits
            return redirect(url_for('index'))
    return render_template('login.html', error=error)

在 2.x 中,它工作正常,但在 3.x 中,我收到如下错误消息:

  File "app.py", line 101
    except InvalidUserPass, e:
                          ^
SyntaxError: invalid syntax

为什么会发生这种情况,我该如何解决?

更改

except InvalidUserPass, e:

except InvalidUserPass as e:

有关详细信息,请参阅

简单地说except InvalidUserPass as e: . 为了天堂的缘故,让我们摆脱丑陋的error

@app.route('/login/', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        session['password'] = request.form['password']

        try:
            # use reddit_api's login
            r.login(user=session['username'], password=session['password'])
        except InvalidUserPass as e:
            return render_template('login.html', 
                                   error='Incorrect username or password.')

        subreddits = r.user.get_my_reddits(limit=25)
        my_reddits = []
        for i in range(25):
            my_reddits.append(subreddits.next().display_name)
        session['my_reddits'] = my_reddits
        return redirect(url_for('index'))

    return render_template('login.html')

在python3中它是:

except InvalidUserPass as e:
file /usr/libexec/urlgrabber-ext-down line 28 except oserror e invalid syntax

modify /usr/bin/yum and /usr/libexec/urlgrabber-ext-dow files

#!/usr/bin/python to #!/usr/bin/python2

问题将得到解决。

在 Python 2.x 中,语法except ExampleError, e:表示将捕获ExampleError类型的异常,并且名称e将用于except块内的该异常。

在 3.x 中,最接近的等效语法是except ExampleError as e: (这也将在 except 块结束后显式删除名称e ,这与 2.x 中的名称将保持定义不同。)

如果您自己的代码中出现此错误,只需相应地修复它即可。

如果此错误出现在库代码中( exampleexample ),则表明该库不支持Python 的现代版本,或者安装已过时,需要升级到更新的库版本。 阅读库的文档以检查版本兼容性,不要尝试自己修复它(除非你打算接管整个项目。)

暂无
暂无

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

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