簡體   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