Да, вы правы. ?: обычно называется «тернарным условным оператором», который часто называют просто «тройным оператором». Это сокращенная версия стандарта if / else условная.
Можно использовать
os.write(tup[0], "foo\n")
для записи в дескриптор.
, Если Вы хотите открыть дескриптор для записи Вас, должен добавить режим "w"
f = os.fdopen(tup[0], "w")
f.write("foo")
Вы забыли определять открытый режим ('w') в fdopen (). Значение по умолчанию является 'r', вызывать запись () звонит в сбой.
я думаю, что mkstemp () создает файл для чтения только. Вызов fdopen с 'w', вероятно, вновь открыл его для записи (Вы можете вновь открыть файл, созданный mkstemp).
Какова Ваша цель, здесь? [Действительно ли 110] является несоответствующим в Ваших целях?
Вот как это сделать с помощью оператора with:
from __future__ import with_statement
from contextlib import closing
fd, filepath = tempfile.mkstemp()
with closing(os.fdopen(fd, 'w')) as tf:
tf.write('foo\n')
temp = tempfile.NamedTemporaryFile(delete=False)
temp.file.write('foo\n')
temp.close()