![](/img/trans.png)
[英]How to resolve FileExistsError: [WinError 183] Cannot create a file when that file already exists?
[英]how to create a file and throw exception if already exists
在我的程序中,如果文件当前不存在,许多进程可以尝试创建文件。 现在我想确保只有一个进程能够创建文件,如果已经创建了其余的进程,则会得到一个异常(过程安全和线程安全的open()实现)。 我怎么能在python中实现这一点。
为了清楚起见,我想要的是如果文件不存在则创建该文件。 但如果它已经存在则抛出异常。 这一切都应该在原子上发生。
在Python 2.x中:
import os
fd = os.open('filename', os.O_CREAT|os.O_EXCL)
with os.fdopen(fd, 'w') as f:
....
在Python 3.3+中:
with open('filename', 'x') as f:
....
如果您在类Unix系统上运行,请打开如下文件:
f = os.fdopen(os.open(filename, os.O_CREAT | os.O_WRONLY | os.O_EXCL), 'w')
os.open
的O_EXCL
标志确保只有文件不存在才会创建(并打开),否则将引发OSError
异常。 存在检查和创建将以原子方式执行,因此您可以让多个线程或进程竞争创建该文件,并且只有一个将成功。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.