Using Python's WITH keyword conditionally

Sometimes you need to use with based on some condition, for instance

with open("sea.json", "r") as infile:
    do_stuff(infile)

opens a file, but what if that file is already open? You’d want something like a conditional with, which does not exist in the base language syntax. However, since Python 3.7 you can use nullcontext:

from contextlib import nullcontext

with (open("sea.json", "r") as infile) if needs_open else nullcontext():
    do_stuff(infile)


To contact me, send an email anytime or leave a comment below.