配置解析器NoSection错误Python

6g8kf2rb  于 2023-02-02  发布在  Python
关注(0)|答案(3)|浏览(275)

我创建了一个名为“config.cfg”的配置文件,它和我的.py文件在同一个文件夹中。

[NetAccess]
host=localhost
port=3306

[Credentials]
username=myuser
password=mypass

[Database]
name=mydb

在我.py文件中,我有以下代码:

import configparser
config = configparser.ConfigParser()
config.read('config.cfg')
__DBMSuser = config.get('Credentials', 'username')
__DBMSpsw = config.get('Credentials', 'password')

当我启动程序时,收到此错误:
configparser.NoSectionError: No section: 'Credentials'
有人能帮帮我吗?

hgqdbh6s

hgqdbh6s1#

你的代码对我来说是有效的。最有可能的问题是阅读配置文件本身。Config Parser的read方法被配置为如果找不到或读取文件就静默失败,但是read函数返回一个read_ok布尔标记。使用它来检查读取是否成功:

import configparser
config = configparser.ConfigParser()

filename = 'config.cfg'
read_ok = config.read(filename)

if read_ok:
    __DBMSuser = config['Credentials']['username']
    __DBMSpsw = config['Credentials']['password']

else:
    print(f'Could not read file {filename}')
rkue9o1l

rkue9o1l2#

你的代码没有错误,因为它对我有效。
我认为文件中存在一些小错误:

  • 确保您的文件与python文件位于同一目录中
  • 你保存文件了吗?也许你忘了按ctrl+s
  • 如果连这一点都不起作用,请尝试其他版本的Python
csbfibhn

csbfibhn3#

我已经解决了这个问题。我的代码是正确的,.cfg文件正确地保存在我的程序的文件夹中,但是因为我的代码的其他部分,我的当前目录更改为“C:/Windows/Service 32”。没有阅读文件,我没有错误,直到我试图读取部分,所以我得到NoSectionError。为了解决这个问题,我选择了一个标准的文件夹(在AppData中)来保存我的文件并读取它,然后我使用了绝对路径。

相关问题