[英]Append to file only if it already exists
在我的腳本開始時,文件script.log
應該存在並且消息被附加到它。 但是如果該文件不存在(用戶已決定刪除該文件),則不應再次創建該文件,而是將消息打印到stdout
。 僅當您看到它時才填充桶。
怎么做?
一定有很多人遇到過類似的問題,但我找不到任何解決方案。
if os.path.exists('script.log'):
with open('script.log', 'a') as f:
f.write('foo')
else:
print('foo')
我知道以下代碼應該可以工作,但理想情況下我想避免它,因為它包含競爭條件:
if os.path.exists('script.log'): with open('script.log', 'a') as f: f.write('foo') else: print('foo')
單獨使用os.open
和os.fdopen
而不是open
。
open
使用的"a"
模式嘗試使用標志os.O_APPEND
和os.O_CREAT
打開文件,如果文件不存在則創建文件。 我們將使用os.fdopen
僅使用os.O_APPEND
標志,如果它不存在,則會引發FileNotFoundError
。
假設它成功,我們將使用os.fdopen
將fdopen
返回的fdopen
在一個類似文件的對象中。 (不幸的是,這需要一個看似多余的"a"
標志。)
import os
import sys
try:
fd = os.open('script.log', os.O_APPEND)
with os.fdopen(fd, "a") as f:
f.write("foo")
except FileNotFoundError:
print("foo")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.