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: Addition to Documentation of configparser.ConfigParser.write()
Type: Stage:
Components: Documentation Versions: Python 3.5
process
Status: closed Resolution:
Dependencies: Superseder:
Assigned To: docs@python Nosy List: berker.peksag, docs@python, georgefischhof, r.david.murray
Priority: normal Keywords:

Created on 2016-11-16 15:00 by georgefischhof, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (5)
msg280960 - (view) Author: George Fischhof (georgefischhof) Date: 2016-11-16 15:00
Hi There, 

I used configparser.ConfigParser.write() to update a config file.
And I found that my config wa duplicated.

The file was opened with mode 'r+' 
I figured out that write (I mean the write method of configparser) writes at actual file position.

I issued a file.seek(0) command before write and the result was good.


So I think documentaion should advice to user to reopen the file with mode 'w' or to issue a file.seek(0) command before using the ConfigParser.write()


I used the following python version on windows:
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32

affected documentation:
https://docs.python.org/3.5/library/configparser.html#configparser.ConfigParser.write

Best Regards,
George Fischhof
msg281568 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2016-11-23 16:18
Thanks for the report, George.

Using 'r+' means that you don't have to reopen the same file if you want to both read and write to it but it's up to you to check where the cursor is before writing anything to it.

Since the ConfigParser.write() method doesn't have any control over the file object (and this is not the only place that someone can pass a file object in the stdlib), I don't think we should make its documentation more complicated.

I wouldn't strongly object adding a short sentence about the behavior of the + mode if someone wants to write a patch. Doc/tutorial/inputoutput.rst or Doc/library/functions.rst might be a good place to put that information.
msg281631 - (view) Author: George Fischhof (georgefischhof) Date: 2016-11-24 13:04
Hi Berker, 

It is true, I agree ;-)

But this way ConfigParser works different than xml parsers (for example elementtree from system lib), as when I use elementtree.write it wil create a file with full and valid xml content.

But ConfigParser is "able" ;-) to create file with invalid content (for example (this was my findings) creates duplicated sections.

So it could be a feature request for ConfigParser:
It should be able to write config to a given filename, not only into file object.
(Like xml parser)

Kind regards,
George
msg281634 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2016-11-24 14:42
That would be a separate issue (a feature request).  It would make sense, since there is already a read_file method.
msg281637 - (view) Author: George Fischhof (georgefischhof) Date: 2016-11-24 15:03
Hi,

issue 28788 created as feature request

BR,
George
History
Date User Action Args
2022-04-11 14:58:39adminsetgithub: 72900
2016-11-24 15:03:46georgefischhofsetstatus: open -> closed

messages: + msg281637
2016-11-24 14:42:58r.david.murraysetnosy: + r.david.murray
messages: + msg281634
2016-11-24 13:04:00georgefischhofsetmessages: + msg281631
2016-11-23 16:18:59berker.peksagsetnosy: + berker.peksag
messages: + msg281568
2016-11-16 15:02:21georgefischhofsettitle: Addition to Documentation of configparser.ConfigParser.write() documentaion -> Addition to Documentation of configparser.ConfigParser.write()
2016-11-16 15:00:35georgefischhofcreate