Для интерактивного использования самый простой способ сделать это, вероятно, просто вернуть объект байтов, содержащий один нулевой байт: b"\0"
.Эмулятор терминала ничего не печатает для него, и поэтому будет выглядеть, что этот ввод просто полностью игнорируется.
Это, вероятно, не подходит для некоторых случаев использования псевдотерминалов.В частности, если содержимое, записанное в псевдотерминал, будет снова записано присоединенной программой, это, вероятно, приведет к появлению в файле случайных нулевых байтов.При проверке с cat
в качестве присоединенной программы последовательность ^@
выводится на терминал всякий раз, когда ему отправляется нулевой байт.
Итак, YMMV.
Более правильное решение будетбыть для создания типа оболочки, который может маскироваться под пустую строку для целей os.write
, но в булевом контексте он будет оцениваться как "правдивый", чтобы не вызывать условное окончание файла.Я экспериментировал с этим и не мог понять, что нужно подделать, чтобы os.write
полностью принял обертку как строковый тип.Мне неясно, возможно ли это вообще.: (
Вот моя первоначальная попытка создания такого типа оболочки:
class EmptyBytes():
def __init__(self):
self.sliced = False
def __class__(self):
return type(b"")
def __getitem__(self, _key):
return b""