我正在使用 subprocess.popen 运行命令并获取标准输出。
碰巧程序(mplayer)同时使用了 eol 类型\n
和\r
. s来自\r
终端控制字符。所以我最终得到的输出是常规行,其中穿插着非常长的行,其中\r
s 被忽略了。
我知道如果我自己打开了一个文件,我可以设置换行符类型。但是,我从 popen 获取标准输出,所以我无法控制它。
我查看了 python 2.7 源代码,我想我可以以某种方式使用 TextIOWrapper 来尊重这两种 eol 类型。但是我不太确定我需要传递给它什么。我知道我需要向构造函数传递某种缓冲区,但我不知道如何从已打开的文件中获取缓冲区。
总而言之,我如何readline()
在 python 中同时中断\n
并\r
给出一个已经打开的文件/流?