Используйте os.open
и os.fdopen
отдельно, а не open
.
Режим "a"
, используемый open
, пытается открыть файл с помощью флагов os.O_APPEND
и os.O_CREAT
, создание файла, если он еще не существует. Мы будем использовать os.fdopen
, чтобы использовать просто флаг os.O_APPEND
, вызывая повышение FileNotFoundError
, если он еще не существует.
Предполагая, что это успешно, мы ' Я буду использовать os.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")