On 09Aug2019 20:53, Paul St George <em...@paulstgeorge.com> wrote:
I almost understand.
Are you saying I should change the first line of code to something
like:
|outstream = with open(path to my file,'w') # this is invalid syntax|
and then delete the
outstream.close()
No, you should do what Peter wrote:
with open("/path/to/file", "w") as outstream:
print(my_stuff, file=outstream)
Got it! I hadn't taken Peter's advice as code. I thought (well anyway now I
have it). So thanks to Peter, Cameron and
Rhodri.
No worries. You should also got and look up "context manager" in the
Python docs.
It is a general mechanism where you can write:
with something as name:
suite of code
where "something" is an object which implements a context manager.
Before "suite of code" starts Python calls "something.__enter__" and
when the interpreter leaves the suite Python calls "something.__exit__".
Notably, it will call __exit__ no matter how you leave the suite: as
usual, by falling off the end, or early with an exception or a break or
a continue or a return. The __exit__ function always gets called.
In the case Peter's example, "something" is "open()": the file object
you get back from open() implements a context manager. Its __enter__
function does nothing, but its __exit__ function closes the file.
Reliably and immediately.
Cheers, Cameron Simpson <c...@cskk.id.au> (formerly c...@zip.com.au)
I swear to god, officer, I'm fixing this bridge. Just go divert traffic.
--
https://mail.python.org/mailman/listinfo/python-list