Как отмечалось в других ответах, на самом деле нигде не требуется объект file
, но есть интерфейсы, которым требуются настоящие файловые дескрипторы уровня ОС, которые похожи на файлы типа StringIO
не могу предоставить.
Модуль os
имеет несколько методов, которые работают непосредственно с файловыми дескрипторами, как и модули select
и mmap
. Некоторые модули более высокого уровня полагаются на те, что находятся внутри, поэтому могут иметь некоторые ограничения при работе с файловыми объектами, которые не поддерживают метод fileno()
.
Однако я не знаю какой-либо последовательной документации об этих ограничениях (кроме очевидного API-интерфейса, который принимает числовые дескрипторы файлов, а не объекты). Это скорее вопрос «попробуй и посмотри, работает ли». Если что-то не работает, то это нужно держать в уме, чтобы проверить, как возможный виновник (особенно если фразы, такие как "no attribute named 'fileno'"
или "invalid file descriptor"
, появляются в любых соответствующих сообщениях об ошибках).