Hacker News new | ask | show | jobs
by masklinn 3811 days ago
Don't forget the part where checking for preconditions opens you up to race conditions e.g.

    if not file_exists(filepath):
        stderr("invalid config filepath!")
    # filepath is removed by an external tool
    config = read_file(filepath) # blows up file does not exist
1 comments

Is there still a chance of a race condition when you use the "with" operator? It seems like this is one of the major use cases it was designed for
It depends on how you use it! If you use it to acquire the resource, as in

    with open(fn, 'r'):
        ...
then generally the answer is no, since that is the same thing as the equivalent `try…finally`. If someone removes the file after it's being opened it will not be completely wiped until it's closed.