如果已经存在,如何创建文件并抛出异常

Ado*_*bri 6 python python-2.7

在我的程序中,如果文件当前不存在,许多进程可以尝试创建文件.现在我想确保只有一个进程能够创建文件,如果已经创建了其余的进程,则会得到一个异常(过程安全和线程安全的open()实现).我怎么能在python中实现这一点.

为了清楚起见,我想要的是如果文件不存在则创建该文件.但如果它已经存在则抛出异常.这一切都应该在原子上发生.

fal*_*tru 8

在Python 2.x中:

import os

fd = os.open('filename', os.O_CREAT|os.O_EXCL)
with os.fdopen(fd, 'w') as f:
    ....
Run Code Online (Sandbox Code Playgroud)

在Python 3.3+中:

with open('filename', 'x') as f:
    ....
Run Code Online (Sandbox Code Playgroud)