[英]configparser does not show sections
我将部分及其值添加到 ini 文件中,但 configparser 不想打印我总共有哪些部分。 我做了什么:
import configparser
import os
# creating path
current_path = os.getcwd()
path = 'ini'
try:
os.mkdir(path)
except OSError:
print("Creation of the directory %s failed" % path)
# add section and its values
config = configparser.ConfigParser()
config['section-1'] = {'somekey' : 'somevalue'}
file = open(f'ini/inifile.ini', 'a')
with file as f:
config.write(f)
file.close()
# get sections
config = configparser.ConfigParser()
file = open(f'ini/inifile.ini')
with file as f:
config.read(f)
print(config.sections())
file.close()
返回
[]
类似的代码在文档中,但不起作用。 我做错了什么以及如何解决这个问题?
从文档中, config.read()
接受文件名(或它们的列表),而不是文件描述符 object:
read
(
filenames, encoding=None
)
尝试读取和解析一个可迭代的文件名,返回一个成功解析的文件名列表。
如果文件名是字符串、字节 object 或类似路径的 object,则将其视为单个文件名。 ...
如果不存在任何命名文件,则 ConfigParser 实例将包含一个空数据集。 ...
文件 object 是字符串的可迭代对象,因此配置解析器基本上试图将文件中的每个字符串作为文件名读取。 这有点有趣和愚蠢,因为如果你传递一个包含实际配置文件名的文件......它会起作用。
无论如何,您应该将文件名直接传递给config.read()
,即 config.read("ini/inifile.ini")
或者,如果您想使用文件描述符 object 代替,只需使用config.read_file(f)
。 阅读read_file()
的文档以获取更多信息。
顺便说一句,您正在重复上下文管理器正在做的一些工作而没有任何收获。 您可以使用with
块,而无需先显式创建 object 或在之后关闭它(它将自动关闭)。 把事情简单化:
with open("path/to/file.txt") as f:
do_stuff_with_file(f)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.