Configparser整数

时间:2015-11-11 07:28:41

标签: python parsing config configparser

我不确定我做错了什么。以前的代码是:

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 

3 个答案:

答案 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")