On Thursday, December 1, 2016 at 2:31:11 PM UTC-5, DFS wrote: > After a simple test below, I submit that the above scenario would never > occur. Ever. The time gap between checking for the file's existence > and then trying to open it is far too short for another process to sneak > in and delete the file.
It doesn't matter how quickly the first operation is (usually) followed by the second. Your process could be swapped out between the two operations. On a heavily loaded machine, there could be a very long time between them even if on an average machine, they are executed very quickly. For most programs, yes, it probably will never be a problem to check for existence, and then assume that the file still exists. But put that code on a server, and run it a couple of million times, with dozens of other processes also manipulating files, and you will see failures. How to best deal with this situation depends on what might happen to the file, and how you can best coordinate with those other programs. Locks only help if all the interfering programs also use those same locks. A popular strategy is to simply use the file, and deal with the error that happens if the file doesn't exist, though that might not make sense depending on the logic of the program. You might have to check that the file exists, and then also deal with the (slim) possibility that it then doesn't exist. --Ned. -- https://mail.python.org/mailman/listinfo/python-list