python configparser输出问题

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

我想将从文件中提取的行添加到节中,该行的格式不是option = value,我使用此程序:

import configparser
f = open('inventory_file', 'r')
config = configparser.ConfigParser()
config.add_section('windows')
for line in f:
    if line[4] == '0':
        config.set('windows', line, 'None')

with open('example.cfg', 'w') as configfile:
    config.write(configfile)

库存文件:

W00VL9959061
W01V09908960
W01V09907745
W01V09907746
W01V09908317
W01V09907748
W00VL9968055

我在example.cfg中得到了这个结果:

[windows]
w01v09908960
 = None
w01v09907745
 = None
w01v09907746
 = None
w01v09908317
 = None
w01v09907748
 = None

我想要这样的东西:

[windows]
w01v09908960
w01v09907745
w01v09907746
w01v09908317
w01v09907748

任何想法,请问我如何修改脚本以得到预期的结果

python configparser
2个回答
0
投票

INI文件具有参数值对,因此您要查找的不是INI文件。

在这种情况下,您可以手动进行:

with open('inventory_file') as inv, open('example.cfg', 'w') as cfg:
    print('[windows]', file=cfg)
    for line in inv:
        if line[4] == '0':
            print(line, file=cfg, end='')

example.cfg中的输出:

[windows]
W01V09908960
W01V09907745
W01V09907746
W01V09908317
W01V09907748

0
投票

自Python 3.2开始,您可以将allow_no_value传递给ConfigParser构造函数(读取this section of the manual),以允许没有值的键。然后,您可以使用config.set(section,key)获得所需的内容:

import configparser
f = open('inventory_file', 'r')
config = configparser.ConfigParser(allow_no_value=True)
config.add_section('windows')
for line in f:
  if line[4] == '0':
    config.set('windows', line)

with open('example.cfg', 'w') as configfile:
  config.write(configfile)

尽管生成的文件在键之间有空白行:

[windows]
w01v09908960

w01v09907745

w01v09907746

w01v09908317

w01v09907748
© www.soinside.com 2019 - 2024. All rights reserved.