繁体   English   中英

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

[英]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.openO_EXCL标志确保只有文件不存在才会创建(并打开),否则将引发OSError异常。 存在检查和创建将以原子方式执行,因此您可以让多个线程或进程竞争创建该文件,并且只有一个将成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM