qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 28/38] qapi/gen.py: update write() to be more idiomatic


From: John Snow
Subject: Re: [PATCH v2 28/38] qapi/gen.py: update write() to be more idiomatic
Date: Mon, 28 Sep 2020 10:08:43 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0

On 9/28/20 8:09 AM, Markus Armbruster wrote:
Eric Blake <eblake@redhat.com> writes:

On 9/25/20 8:52 AM, Markus Armbruster wrote:

This was my best attempt to open the file read/write, creating it if it
doesn't exist.

Plain

          f = open(pathname, "r+", encoding='utf-8')

fails instead of creates, and

          f = open(pathname, "w+", encoding='utf-8')

truncates.

If you know a better way, tell me!

IIUC, you need  "a+" as the mode, rather than "w+"
Sure this lets me do
              f.seek(0)
              f.truncate(0)
              f.write(text)
to overwrite the old contents on all systems?

As long as you do a single pass over the output (you issue a stream of
f.write() after the truncate, but never a seek), then this will work.

Well, I do seek(), right before the truncate.

Documentation cautions:
      [...] 'a' for appending (which on some Unix systems, means that
all
      writes append to the end of the file regardless of the current seek
      position).

Yes, that means that random access is impossible on such a stream.
But not all file creation patterns require random access.

To be honest, I still prefer the code I wrote, because there the reader
only wonders why I didn't just open(), while here we get to argue about
subtleties of mode "a+".


I kept your os.open, I agree with you here.

(I still rewrote to use the context managers, though.)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]