Python 3 configparser 中的 read 和 read_file 有什么区别?

问题描述 投票:0回答:1

我想知道 configparser 中 read 和 read_file 的使用有什么区别。据我测试过

config_parser = configparser.ConfigParser()
config_parser.read(config_file)

config_parser = configparser.ConfigParser()
config_parser.read_file(config_file)

两者都适合我。 config_file 是我作为输入参数传递的 config_file 的名称。

python python-3.x configparser
1个回答
8
投票

read_file
接受类似文件的对象,
read
接受文件name

read
的主要问题是,如果文件不存在,它会默默失败,使
ConfigParser
为空。

config_parser.read("config.ini")  # object is unchanged even if file doesn't exist

使用

read_file
不会发生这种情况,因为您可以控制文件打开的方式。

with open("config.ini") as f:
   config_parser = configparser.RawConfigParser()
   config_parser.read_file(f)

另一个有用的情况是当您有代表

.ini
文件内容的行列表时。

read_file
有点“接受”字符串作为输入(因为字符串是可迭代的),但结果没有用:

>>> config_parser.read_file("config.ini")
Traceback (most recent call last):
  File "<string>", line 301, in runcode
  File "<interactive input>", line 1, in <module>
  File "L:\Python34\lib\configparser.py", line 690, in read_file
    self._read(f, source)
  File "L:\Python34\lib\configparser.py", line 1057, in _read
    raise MissingSectionHeaderError(fpname, lineno, line)
configparser.MissingSectionHeaderError: File contains no section headers.
file: '<???>', line: 1
© www.soinside.com 2019 - 2024. All rights reserved.