Man*_*dal 7 python configparser python-3.x
我想知道 configparser 中 read 和 read_file 的使用有什么区别。据我测试过
config_parser = configparser.ConfigParser()
config_parser.read(config_file)
Run Code Online (Sandbox Code Playgroud)
和
config_parser = configparser.ConfigParser()
config_parser.read_file(config_file)
Run Code Online (Sandbox Code Playgroud)
两者都适合我。config_file 是我作为输入参数传递的 config_file 的名称。
read_file接受类似文件的对象,read接受文件名。
主要问题read是,如果文件不存在,它会默默地失败,留下ConfigParser空的。
config_parser.read("config.ini") # object is unchanged even if file doesn't exist
Run Code Online (Sandbox Code Playgroud)
read_file由于您控制文件打开的方式,因此不会发生这种情况。
with open("config.ini") as f:
config_parser = configparser.RawConfigParser()
config_parser.read_file(f)
Run Code Online (Sandbox Code Playgroud)
另一个有用的情况是当您有代表文件内容的行列表时.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
Run Code Online (Sandbox Code Playgroud)