![](/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.