gpt4 book ai didi

python - ConfigParser - 写入 .ini 文件

转载 作者:行者123 更新时间:2023-12-04 14:26:00 31 4
gpt4 key购买 nike

我有一个 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)

我收到以下错误:

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

我想请教一个问题:

  • 将配置存储在 .ini 文件中是否合适?如果是这样,如何最好地保护它不被公众阅读/公开。

最佳答案

是的,在许多其他可能的解决方案中,将配置存储在 .ini 文件中是常见的做法。至于安全性,我强烈建议将其存储在非公共(public)文件夹中,位于您的网络根目录树之外的某个位置。这样您的 Python 应用程序就可以读取它,但没有网络用户可以下载它。

关于你的错误:.ini 选项值(和选项名称)必须是字符串,所以改变你的行:

Config.set('gkey','key',True)

Config.set('gkey','key','True')  # or '1'

然后使用 configparser 的 .getboolean() 而不是 .get() 读取该值


此外,我强烈建议不要在没有with ... block 的情况下使用open()。而且似乎没有充分的理由进行 if 测试,它被认为是 Python 中的反模式和糟糕的编程实践。使用标准模式可以使代码更简单、更健壮:

def writeKey(key):
with open("config.ini", 'w') as cfgfile:
Config = configparser.ConfigParser()
# add the settings to the structure of the file, and lets write it out...
Config['keys']['gkey'] = key
Config.write(cfgfile)

关于python - ConfigParser - 写入 .ini 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43920861/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com