我在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。
答案 0 :(得分:3)
失败的表达式使用conditional_expression中添加的python Python 2.5。
您最好的选择是升级到支持的Python版本
答案 1 :(得分:2)
由于Abhijit已经说过你不能在python< 2.5中使用条件表达式,但是你可以用两种简单的方法解决这个问题:
(r != rn and "~") or ""
或者:
"~" * (r != rn)
第一个是安全的,因为"~"
被视为True
因此如果r != rn
则保证and
将成功,因此or
不会评估第二个表达式。
第二个使用以下事实:字符串乘以1
(或True
)返回字符串本身,而字符串乘以0
(或False
)返回""
(空字符串)。
修改强> 由于错误是由不在您控制范围内的文件生成的,因此不应修改其源代码。该库使用Python的2.5语法只是意味着它不支持Python 2.4.3,你必须更改库或升级你的python安装。
由于python2.4.x最后一次发布于2008年,我认为将python安装升级到python2.7.3是个好主意。这应该可以解决您的问题,并且您将获得更新版本的python的所有好处。