gpt4 book ai didi

python - Configparser 偶尔返回空结果

转载 作者:行者123 更新时间:2023-12-03 23:48:08 25 4
gpt4 key购买 nike

我正在使用 Python configparser 从 ini 文件中读取配置。 95% 的情况下,它运行良好。如果不对 ini 文件进行任何更改(例如,在回归测试的中间),configparser 将开始返回空结果,然后在搜索嵌套配置时当然会出现关键错误。

这表明 ini 文件不是问题,因为它没有改变,也因为它偶尔会发生。一旦问题发生,它会在对配置解析器的所有调用中继续发生,直到我终止程序并重新运行它。

我正在阅读这样的配置:

try:
path = os.path.dirname(os.path.realpath(__file__))
kml_ini = '/'.join([path, 'kml.ini'])
config = configparser.ConfigParser()
config.read(kml_ini)
db_conn_returnable = config['database']['db_connection'].strip()
except Exception as e:
print(e)
traceback.print_exc(file=sys.stdout)
pprint.pprint(config.sections())
pprint.pprint({section: dict(config.items(section)) for section in config.sections()})

我收到错误:
文件“/home/sahmed/anaconda3/envs/kml/lib/python3.6/configparser.py”,第 959 行,在 中getitem
key 错误:'数据库'

我的 ini 文件如下所示:
[api]
server_debug=False
log_level=info
n_workers=10

[database]
db_connection=http://1.1.1.1:9191
user=admin
pass=whateverman

[cluster]
default_workers=3

我最初的想法是一个线程问题,因为我有 8 个线程不断地访问这个配置文件(虽然它没有意义......我们只是阅读)所以我什至在阅读上放了一个紧固件块,仍然没有运气。什么可能导致这种情况?

最佳答案

我可以用您提供的代码复制问题的唯一方法是,如果我在代码期间强行更改了工作目录。

我把这个放在一起来测试这个问题:

from time import sleep
import configparser
import os

def readINI():
try:
path = os.path.dirname(os.path.realpath(__file__))
ini = '/'.join([path, "test.ini"])
config = configparser.ConfigParser()
config.read(ini)
string = config["things"]["abc"]
print(string)
except Exception as e:
print("Error: {}".format(e))

count = 0
while True:
count +=1
readINI()
sleep(1)
if count % 3 == 0:
os.chdir("..")
elif count > 1 and count % 3 == 1:
os.chdir("./TestFolder")
test.ini很简单,它只包含两行:
[things]
abc=123

我将这两个文件放在同一个文件夹中,并在“根”文件夹和包含这些文件的 TestFolder 之间来回移动。如果您 raise异常而不是仅仅打印它,那么您将收到相同的错误消息。

请确认您在代码执行期间没有意外更改工作目录,看看这是否确实是问题的原因。

关于python - Configparser 偶尔返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61244883/

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