Вы можете использовать os.fstat
, чтобы определить, действителен ли дескриптор файла перед каждой записью, но вам нужно будет обернуть его при попытке / исключении, так как некорректные файловые дескрипторы вызовут OSError
, Возможно, вам лучше просто создать собственную функцию записи с помощью try / исключением.
def write(data, fd=3):
try:
os.write(fd, data)
except OSError:
sys.stdout.write(data)