Python ConfigParser-写入.ini文件

Python ConfigParser-写入.ini文件,python,flask,configparser,Python,Flask,Configparser,我有一个config.ini文件,其中有一些web应用程序的默认配置(使用VS 2017) 我还想自己写一些配置 我正在使用下面的代码尝试在[keys]部分中写入,变量为gkey: def writeKey(key): Config = configparser.ConfigParser() configFile = Path("config.ini") if configFile.is_file() == False: cfgfile = ope

我有一个config.ini文件,其中有一些web应用程序的默认配置(使用VS 2017)

我还想自己写一些配置

我正在使用下面的代码尝试在
[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
回溯(最近一次呼叫最后一次):
文件“C:\Users\blivo\documents\visual studio 2017\Projects\blivori2\blivori2\blivori2\functions\common.py”,第59行,在
writeKey(gkey)
文件“C:\Users\blivo\documents\visual studio 2017\Projects\blivori2\blivori2\blivori2\functions\common.py”,第30行,writeKey
Config.set('gkey','key',True)
文件“C:\Program Files\Python36\lib\configparser.py”,第1189行,在集合中
自我验证值类型(选项=选项,值=值)
文件“C:\Program Files\Python36\lib\configparser.py”,第1174行,在\u validate\u value\u类型中
raise TypeError(“选项值必须是字符串”)
TypeError:选项值必须是字符串
我想问一个问题:

  • 将配置存储在.ini文件中是否合适?如果是这样的话,如何保护其不被公众阅读/接触的最佳方式

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

关于您的错误:
.ini
选项值(和选项名称)必须是字符串,因此更改行:

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


然后使用configparser的
.getboolean()
而不是
.get()

gkey
转换为字符串来读取该值。
Config.set('gkey','key','True')  # or '0'