Skip to content

26.1 通过管道重定向标准输入时如何保持raw read

https://scz.617.cn/python/200604041509.txt

Q:

测试环境是Python 2.4 For Windows。

hexout "Grin: Grin\r\n" | python hexdump.py byteArray [ 11 bytes ] -> 16 bytes per line 00000000 47 72 69 6E 3A 20 47 72-69 6E 0A Grin: Grin.

\r\n一起传给管道时,\r不见了!

hexout "\r" | python hexdump.py byteArray [ 1 bytes ] -> 16 bytes per line 00000000 0D .

hexout "\r\n" | python hexdump.py byteArray [ 1 bytes ] -> 16 bytes per line 00000000 0A .

hexdump.py中用如下代码读取标准输入:

buf = array( 'B', stdin.read() )

通过管道重定向标准输入时如何保持raw read?

A: flier

hexout "\r\n" | python -u hexdump.py byteArray [ 2 bytes ] -> 16 bytes per line 00000000 0D 0A ..

或者修改hexdump.py,增加如下代码:

import msvcrt, os

stdin/stdout/stderr

msvcrt.setmode( 0, os.O_BINARY ) msvcrt.setmode( 1, os.O_BINARY ) msvcrt.setmode( 2, os.O_BINARY )

第二种方案更理想一些。