我们可能需要检查一下是否可以访问这个文件,如果可以的话,我们将打开它并打印其中的内容。如果我们不能访问文件,我们将打 else的部分。这是一个竞态条件的原因是因为我们首先进行访问检查。当我们到达 with open(my_file) as f:时,可能由于一些权限问题(例如,另一个进程获得一个独占文件锁) ,我们不能再访问它了。这段代码可能会抛出一个错误,我们将无法捕获这个错误,因为我们认为我们可以访问该文件。
import os
my_file = "/path/to/my/file.txt"
# Race condition
if os.access(my_file, os.R_OK):
with open(my_file) as f:
print(f.read())
else:
print("File can't be accessed")