gpt4 book ai didi

python - 没有部分的 Configparser 集

转载 作者:行者123 更新时间:2023-11-28 17:46:15 25 4
gpt4 key购买 nike

有没有一种方法可以让 python 中的 configparser 设置一个值,而无需在配置文件中包含任何部分?

如果没有,请告诉我任何替代方案。

谢谢。

更多信息:所以基本上我有一个格式为的配置文件:名称:值这是一个系统文件,我想更改给定名称的值。我想知道这是否可以通过模块而不是手动编写解析器轻松完成。

最佳答案

您可以使用 csv 模块来完成解析文件并在您进行更改后将其写回的大部分工作——因此它应该相对易于使用。我的想法来自 answer 之一题为 Using ConfigParser to read a file without section name 的类似问题。 .

但是我对它做了一些更改,包括将它编码为在 Python 2 和 3 中工作,取消对它使用的键/值定界符的硬编码,这样它几乎可以是任何东西(但默认情况下是冒号),以及多项优化。

from __future__ import print_function  # For main() test function.
import csv
import sys
PY3 = sys.version_info.major > 2


def read_properties(filename, delimiter=':'):
""" Reads a given properties file with each line in the format:
key<delimiter>value. The default delimiter is ':'.

Returns a dictionary containing the pairs.

filename -- the name of the file to be read
"""
open_kwargs = dict(mode='r', newline='') if PY3 else dict(mode='rb')

with open(filename, **open_kwargs) as csvfile:
reader = csv.reader(csvfile, delimiter=delimiter, escapechar='\\',
quoting=csv.QUOTE_NONE)
return {row[0]: row[1] for row in reader}


def write_properties(filename, dictionary, delimiter=':'):
""" Writes the provided dictionary in key-sorted order to a properties
file with each line of the format: key<delimiter>value
The default delimiter is ':'.

filename -- the name of the file to be written
dictionary -- a dictionary containing the key/value pairs.
"""
open_kwargs = dict(mode='w', newline='') if PY3 else dict(mode='wb')

with open(filename, **open_kwargs) as csvfile:
writer = csv.writer(csvfile, delimiter=delimiter, escapechar='\\',
quoting=csv.QUOTE_NONE)
writer.writerows(sorted(dictionary.items()))


def main():
data = {
'Answer': '6*7 = 42',
'Knights': 'Ni!',
'Spam': 'Eggs',
}

filename = 'test.properties'
write_properties(filename, data) # Create csv from data dictionary.

newdata = read_properties(filename) # Read it back into a new dictionary.
print('Properties read: ')
print(newdata)
print()

# Show the actual contents of file.
with open(filename, 'rb') as propfile:
contents = propfile.read().decode()
print('File contains: (%d bytes)' % len(contents))
print('contents:', repr(contents))
print()

# Tests whether data is being preserved.
print(['Failure!', 'Success!'][data == newdata])

if __name__ == '__main__':
main()

关于python - 没有部分的 Configparser 集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17747627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com