в C, я могу написать в дескриптор файла 3 следующим образом:
$ cat write.c
#include <unistd.h>
int main(void) {
write(3, "written in fd 3\n", 16);
}
Затем я могу вызвать программу и перенаправить fd 3 на fd 1 (stdin) следующим образом:
$ ./write 3>&1
written in fd 3
Как я могу сделать это в python? Я проверил os.open()
, но он создает дескриптор файла из файла в файловой системе (очевидно, я не могу выбрать, какой дескриптор файла выделить) и os.fdopen()
создает объект файла из дескриптора файла (созданного с помощью os.open()
). Итак, как я могу выбрать номер дескриптора файла.
Я пытался:
with os.fdopen(3, 'w+') as fdfile:
, но это дает мне:
OSError: [Errno 9] Bad file descriptor
РЕДАКТИРОВАТЬ: Это мой python программа:
$ cat fd.py
import os
with os.fdopen(3, 'w+') as fdfile:
fdfile.write("written to fd 3\n")
fdfile.close()
И вот результат, когда я его запускаю:
$ python fd.py 3>&1
Traceback (most recent call last):
File "fd.py", line 3, in <module>
with os.fdopen(3, 'w+') as fdfile:
File "/usr/lib/python3.8/os.py", line 1023, in fdopen
return io.open(fd, *args, **kwargs)
io.UnsupportedOperation: File or stream is not seekable.