2

我在我的 RedHat 服务器中运行基于 Python 的 MooseFS CGI 服务器,我得到一个奇怪的语法错误:

Traceback (most recent call last):
    File "/usr/sbin/mfscgiserv", line 300, in run_cgi
    execfile(self.file_name)
File "/usr/share/mfscgi/mfs.cgi", line 129
    return "%s%.1f%s" % (("~" if n != rn else ""),rn,s)
                            ^
SyntaxError: invalid syntax

它只是从 moosefs 官方网站下载的正确文件,我找不到任何错误。我的 python 版本是 2.4.3。

4

2 回答 2

3

失败的表达式使用 python conditional_expression,它是在Python 2.5中添加的。

最好的选择是升级到受支持的 Python 版本

于 2012-12-28T09:01:25.313 回答
2

正如 Abhijit 已经说过的,您不能在 python<2.5 中使用条件表达式,但您可以通过两种简单的方式解决这个问题:

(r != rn and "~") or ""

或者:

"~" * (r != rn)

第一个是安全的,因为"~"被考虑True,因此如果r != rn那么保证and将成功,因此or不会评估第二个表达式。

第二个使用这样一个事实,即字符串乘以1(or True) 返回字符串本身,而字符串乘以0(or False) 返回""(空字符串)。


编辑: 由于错误是由不受您控制的文件生成的,因此您不应修改其源代码。该库使用 Python 的 2.5 语法这一事实仅意味着它不支持 Python 2.4.3,您必须更改库或升级您的 Python 安装。

由于 python2.4.x 最后一次发布是在 2008 年,我认为将你的 python 安装升级到 python2.7.3 是个好主意。这应该可以解决您的问题,并且您将获得新版本 python 的所有好处。

于 2012-12-28T09:38:27.857 回答