socket.makefile ()
socket.makefile ( mode='r', buffering=None, *, encoding=None, errors=None, newline=None )
Возвращает объект файла, связанный с сокетом. Точный возвращаемый тип зависит от аргументов, переданных makefile (). Эти аргументы интерпретируются так же, как и встроенной функцией open (), за исключением того, что поддерживаются только значения режима 'r'
(по умолчанию), 'w'
и 'b'
.
Сокет должен находиться в режиме блокировки; у него может быть тайм-аут, но внутренний буфер файлового объекта может оказаться в несогласованном состоянии, если произойдет тайм-аут.
Закрытие файлового объекта, возвращенного makefile (), не приведет к закрытию исходного сокета, если все остальные файловые объекты не были закрыты и для объекта сокета не был вызван socket.close ().
В Windows файловый объект, созданный makefile (), не может использоваться там, где ожидается файловый объект с файловым дескриптором, например потоковые аргументы subprocess.Popen ().
Изменено в версии 3.5: если системный вызов прерывается и обработчик сигнала не вызывает исключения, метод теперь повторяет системный вызов вместо того, чтобы вызывать исключение InterruptedError (объяснение см. в PEP 475).
Преобразование двоичных данных в текст. Простые сокеты передают данные в виде строк двоичных байтов, но благодаря тому, что файлы-обертки открываются в текстовом режиме, при выполнении операций ввода-вывода их содержимое автоматически преобразуется в текст. Файлы-обертки должны открываться в текстовом режиме, когда доступ к ним осуществляется с применением инструментов для работы со стандартными потоками ввода-вывода, таких как встроенная функция print, которая выводит текстовые строки (файлы, открытые в двоичном режиме, напротив, работают со строками байтов). Однако при непосредственном использовании сокетов, текст по-прежнему требуется кодировать в строки байтов вручную.
Last updated