Может ли кто-нибудь указать рабочий пример cat
, реализованный в Python? Эта программа должна читать из stdin и писать в stdout. У меня есть вопрос: как читать все оставшиеся данные из stdin (не обязательно заканчиваться новой строкой)? Должен ли я использовать неблокирующий IO, отключать буферизацию или делать что-то еще?Как реализовать `cat` в Python
Реализация C:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/select.h>
int main()
{
fd_set set;
struct timeval timeout;
FD_ZERO(&set);
FD_SET(0, &set);
timeout.tv_sec = 10;
timeout.tv_usec = 0;
char buf[1024];
while (1) {
select(FD_SETSIZE, &set, NULL, NULL, &timeout);
int n = read(0, buf, 1024);
if (n == 0) {
exit(0);
}
write(1, buf, n);
}
return 0;
}
Тестовая программа:
import time
i = 0
while True:
time.sleep(0.2)
print(i, end='', flush=True)
i += 1
Ожидаемый результат: Трубопроводы тестовую программу, чтобы cat.py
должен выводить номер каждый 0,2 секунды. Результат, как и ожидалось, с встроенным cat
или с реализацией C выше.
Я думаю, вы должны попробовать inbuild питона ** SYS ** библиотека 'импорт SYS данных = sys.stdin.read()' и 'sys.stdout' –
Как правило,' echo' читает из стандартного ввода и пишет на стандартный вывод. 'cat' будет читать из файла и писать в stdout (http://man7.org/linux/man-pages/man1/cat.1.html). Просто выполните поиск по чтению из файла в Python. –
@TusharNiras 'sys.stdin.read()' возвращает 'str'. Работают ли они с байтами? – Cyker