在 Python 中使用 configparser 进行节检查的问题
Problems with section check using configparser in Python
我使用模块 os 和 configparser 在 Python 中编写了以下函数:
def alter_config(section, key, value):
if os.path.isfile('config.ini') is True:
config = configparser.RawConfigParser()
config.read('config.ini')
if section in config is True:
config.set(section, key, value)
with open('config.ini', 'w') as configfile:
config.write(configfile)
return 1
else:
return 3
else:
return 2
问题是,尽管段和键存在于 config.ini 中,但函数总是 returns int(3)。如果我 运行 下面的代码,一切都很好,值被改变了:
def alter_config(section, key, value):
if os.path.isfile('config.ini') is True:
config = configparser.RawConfigParser()
config.read('config.ini')
config.set(section, key, value)
with open('config.ini', 'w') as configfile:
config.write(configfile)
return 1
else:
return 2
config.ini 目前看起来是这样的:
[PATHS]
data = /data
[API_KEYS]
marinetraffic_api = Test
我这样调用函数:
alter_config('API_KEYS', 'marinetraffic_api', 'test_value')
编辑:
我尝试了以下,这更令人困惑:
def test(section):
if os.path.isfile('config.ini') is True:
config = configparser.RawConfigParser()
config.read('config.ini')
print(section in config)
if section in config is True:
print(True)
else:
print(False)
test('API_KEYS')
结果是:
真的
假
找到解决办法。不过,我不知道为什么第一次尝试没有成功:
def alter_config(section, key, value):
if os.path.isfile('config.ini') is True:
config = configparser.RawConfigParser()
config.read('config.ini')
check_section = section in config
if check_section is True:
config.set(section, key, value)
with open('config.ini', 'w') as configfile:
config.write(configfile)
return 1
else:
return 3
else:
return 2
我使用模块 os 和 configparser 在 Python 中编写了以下函数:
def alter_config(section, key, value):
if os.path.isfile('config.ini') is True:
config = configparser.RawConfigParser()
config.read('config.ini')
if section in config is True:
config.set(section, key, value)
with open('config.ini', 'w') as configfile:
config.write(configfile)
return 1
else:
return 3
else:
return 2
问题是,尽管段和键存在于 config.ini 中,但函数总是 returns int(3)。如果我 运行 下面的代码,一切都很好,值被改变了:
def alter_config(section, key, value):
if os.path.isfile('config.ini') is True:
config = configparser.RawConfigParser()
config.read('config.ini')
config.set(section, key, value)
with open('config.ini', 'w') as configfile:
config.write(configfile)
return 1
else:
return 2
config.ini 目前看起来是这样的:
[PATHS]
data = /data
[API_KEYS]
marinetraffic_api = Test
我这样调用函数:
alter_config('API_KEYS', 'marinetraffic_api', 'test_value')
编辑: 我尝试了以下,这更令人困惑:
def test(section):
if os.path.isfile('config.ini') is True:
config = configparser.RawConfigParser()
config.read('config.ini')
print(section in config)
if section in config is True:
print(True)
else:
print(False)
test('API_KEYS')
结果是: 真的 假
找到解决办法。不过,我不知道为什么第一次尝试没有成功:
def alter_config(section, key, value):
if os.path.isfile('config.ini') is True:
config = configparser.RawConfigParser()
config.read('config.ini')
check_section = section in config
if check_section is True:
config.set(section, key, value)
with open('config.ini', 'w') as configfile:
config.write(configfile)
return 1
else:
return 3
else:
return 2