Könnte jemand bitte ein funktionierendes Beispiel von cat
in Python implementiert geben? Dieses Programm sollte von stdin lesen und in stdout schreiben. Die Frage, die ich habe, ist: Wie liest man alle übrigen Daten von stdin (nicht unbedingt mit einem Zeilenumbruch abgeschlossen)? Sollte ich nicht blockierende E/A verwenden, die Pufferung ausschalten oder etwas anderes tun?Wie man `cat` in Python implementiert
Die Umsetzung 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;
}
Das Prüfprogramm:
import time
i = 0
while True:
time.sleep(0.2)
print(i, end='', flush=True)
i += 1
Erwartetes Ergebnis: alle 0,2 Sekunden Prüfprogramm cat.py
ausgeben sollte eine Anzahl Rohrleitungen. Das Ergebnis ist wie erwartet mit dem eingebauten cat
oder mit der obigen C-Implementierung.
Ich denke, Sie sollten inbuild Python versuchen ** ** sys Bibliothek 'import sys data = sys.stdin.read()' und 'sys.stdout' –
Typischerweise' echo' von stdin liest und schreibt aufstehen. 'cat' liest aus einer Datei und schreibt nach stdout (http://man7.org/linux/man-pages/man1/cat.1.html). Suchen Sie einfach nach, wie Sie aus einer Datei in Python lesen können. –
@TusharNiras 'sys.stdin.read()' gibt ein 'str' zurück. Arbeiten sie auch mit 'Bytes'? – Cyker