Bri*_*ian 5 python configparser flask
我有一个 config.ini 文件,其中包含 Web 应用程序的一些默认配置(使用 VS 2017 的 Flask)
我也想自己写一些配置。
我正在使用下面的代码尝试在该[keys]部分中写入,变量是gkey:
def writeKey(key):
Config = configparser.ConfigParser()
configFile = Path("config.ini")
if configFile.is_file() == False:
cfgfile = open("config.ini",'w')
else:
cfgfile = open("config.ini")
# add the settings to the structure of the file, and lets write it out...
Config.add_section('keys')
Config.set('gkey','key',True)
Config.write(cfgfile)
cfgfile.close()
gkey = encrypt(key)
writeKey(gkey)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Traceback (most recent call last):
File "C:\Users\blivo\documents\visual studio 2017\Projects\blivori2\blivori2\blivori2\functions\common.py", line 59, in <module>
writeKey(gkey)
File "C:\Users\blivo\documents\visual studio 2017\Projects\blivori2\blivori2\blivori2\functions\common.py", line 30, in writeKey
Config.set('gkey','key',True)
File "C:\Program Files\Python36\lib\configparser.py", line 1189, in set
self._validate_value_types(option=option, value=value)
File "C:\Program Files\Python36\lib\configparser.py", line 1174, in _validate_value_types
raise TypeError("option values must be strings")
TypeError: option values must be strings
Run Code Online (Sandbox Code Playgroud)
我想问一个问题:
.ini是的,在许多其他可能的解决方案中,将配置存储在文件上是常见的做法。为了安全起见,我强烈建议将其存储在网络根树之外的非公共文件夹中。这样你的Python应用程序可以读取它,但没有网络用户可以下载它。
关于您的错误:.ini选项值(和选项名称)必须是字符串,因此更改您的行:
Config.set('gkey','key',True)
Run Code Online (Sandbox Code Playgroud)
到
Config.set('gkey','key','True') # or '1'
Run Code Online (Sandbox Code Playgroud)
然后使用 configparser 读取该值.getboolean()而不是.get()
另外,我强烈建议不要open()在没有with ...块的情况下使用。而且似乎没有充分的理由进行测试if,它被认为是 Python 中的反模式和糟糕的编程实践。使用标准模式可以使代码更简单、更健壮:
Config.set('gkey','key',True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10000 次 |
| 最近记录: |