为了尝试在python中创建一个简单的cat
克隆,
sys.stdout.write(sys.stdin.read())
我注意到,这对于包含CTRL + Z EOF / substitude character 0x1a的二进制文件(即python cat.py < binaryfile > supposed_copy
)来说非常糟糕,因为这似乎导致read()
考虑完成其工作。我不能简单地循环代码来避免这种情况,因为显然stdin.read()
会在某个时刻等到提供新的输入为止,一旦达到输入的真正末尾,就永远不会发生。
因此,如何解决此问题,即
如何知道何时完全读取了重定向到stdin
的文件,或者
如何正确处理呢?
python大神给出的解决方案
您将需要告诉Python以二进制模式打开stdin
和stdout
。您可以使用-u
选项执行此操作。例如
python -u cat.py < binaryfile > supposed_copy
请注意,这将使stdin
和stdout
无缓冲。