python读取ini文件失败的原因

尝试使用 python 的configparser来读取ini配置文件,但是遇到了No Section的错误。

最终发现其实是路径出了问题。

问题描述

初始代码简化之后是:

1
2
3
4
5
6
7
from configparser import ConfigParser

if __name__ == '__main__':
config=ConfigParser()#创建配置对象
config.read('test.ini')#读取配置文件
result=config.get(section='test',option='name')#读取test下的name
print(result)

同目录的test.ini的内容如下:

1
2
[test]
name = tom

但是运行出现了configparser.NoSectionError: No section: 'test'的错误

原因探索

经过单步调试后发现并没有读取到文件的内容,猜测可能是没有找到文件。

以前在 import 自定义模块的时候遇到过类似的问题,当时的解决方法是把当前工作路径设置为正在执行的文件所在的路径。

解决方案

  1. 使用绝对路径
  2. 将当前工作路径改为当前文件路径,再使用相对路径

第二种方法的代码如下:

1
2
3
4
5
6
7
8
9
10
from configparser import ConfigParser
import os
if __name__ == '__main__':
curpath=os.path.dirname(os.path.realpath(__file__))
filename=os.path.join(curpath,"test.ini")

config=ConfigParser()#创建配置对象
config.read(filename)#读取配置文件
result=config.get(section='test',option='name')#读取test下的name
print(result)
作者

憧憬少

发布于

2019-07-09

更新于

2019-07-09

许可协议