This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: configparse module in python3 can not write '%' to config file
Type: behavior Stage: resolved
Components: Versions: Python 3.6
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: lukasz.langa, mcepl, quanyechavshuo
Priority: normal Keywords:

Created on 2017-06-26 09:48 by quanyechavshuo, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (3)
msg296865 - (view) Author: quanyechavshuo (quanyechavshuo) Date: 2017-06-26 09:48
Hello,I was using configparser module in python3.6,but find it works not good when I try to write '%' to my config file,below is my func:

def update_config_file_key_value(file, section, key_name, key_value):
    # 通过configparser模块的调用更新配置文件
    # section是[]里面的值
    if os.path.exists(file) == False:
        os.system("touch %s" % file)
    import configparser
    config = configparser.ConfigParser()
    config.read(file)
    sectionList = config.sections()
    if section not in sectionList:
        config.add_section(section)
    config.set(section, key_name, str(key_value))
    with open(file, 'w') as f:
        config.write(f)

When I use it as:
update_config_file_key_value('config.ini','default','cookie',"123")
it works well,but below not ok:
update_config_file_key_value('config.ini','default','cookie',"%123")
and below not ok:
update_config_file_key_value('config.ini','default','cookie',"123%")
and below not ok:
update_config_file_key_value('config.ini','default','cookie',"12%3")

That's to say,configparser can not write '%' to config file.
msg298204 - (view) Author: Łukasz Langa (lukasz.langa) * (Python committer) Date: 2017-07-12 12:08
With the default ConfigParser, we're using basic interpolation, as covered by:

https://docs.python.org/3/library/configparser.html#configparser.BasicInterpolation

To not have it, set interpolation to None in the ConfigParser constructor:

    config = configparser.ConfigParser(interpolation=None)

Then percent signs will be treated like any other character. Let me know if you have further questions.
msg313245 - (view) Author: Matej Cepl (mcepl) * Date: 2018-03-05 12:04
Lukasz, this bug could be closed, couldn't it?
History
Date User Action Args
2022-04-11 14:58:48adminsetgithub: 74945
2018-04-02 17:52:06lukasz.langasetstatus: open -> closed
resolution: not a bug
stage: resolved
2018-03-05 12:04:24mceplsetnosy: + mcepl
messages: + msg313245
2017-07-12 12:08:13lukasz.langasetmessages: + msg298204
2017-06-29 18:41:36r.david.murraysetnosy: + lukasz.langa
2017-06-26 09:48:10quanyechavshuocreate