我不确定我做错了什么。以前的代码是:
volume = min(60, max(30, volume))
然而,尝试使用configparser后,我的Twilio服务器上出现了500错误。
volume = min(configParser.get('config_searchandplay', 'volume_max'), max(configParser.get('config_searchandplay', 'volume_min'), volume)) #Max Volume Spam Protection
CONFIG.INI
[config_searchandplay]
#Volume Protection
volume_max = 90
volume_min = 10
答案 0 :(得分:10)
您应该使用:
ConfigParser.getint(section, option)
而不是施法。
volume = min(configParser.getint('config_searchandplay', 'volume_max'), max(configParser.getint('config_searchandplay', 'volume_min'), volume)) #Max Volume Spam Protection
答案 1 :(得分:1)
你的方法的问题是configParser.get
给你一个(unicode)字符串。因此,您应首先将值转换为数字(使用int()
或float()
):
vol_max = int(configParser.get('config_searchandplay', 'volume_max'))
vol_min = int(configParser.get('config_searchandplay', 'volume_min'))
volume = min(vol_max, max(vol_min, volume))
虽然min
适用于字符串:
>>> min(u'90',u'10')
u'10'
它不会总是给出你正在寻找的答案,因为它进行字符串比较。以下是您要避免的内容:
>>> min(u'9',u'10')
u'10'
因此,您需要将字符串转换为数字:
>>> min(int(u'9'),(u'90'))
9
答案 2 :(得分:0)
如果可能的话,我更喜欢将任何字符串转换为数字(注意,您需要非常后面的字符串表示数字)。这是我来自 here 的辅助函数。
value.ToString("\\0.0000000000E+000;-\\0.0000000000E+000")