2

我正在使用 subprocess.popen 运行命令并获取标准输出。

碰巧程序(mplayer)同时使用了 eol 类型\n\r. s来自\r终端控制字符。所以我最终得到的输出是常规行,其中穿插着非常长的行,其中\rs 被忽略了。

我知道如果我自己打开了一个文件,我可以设置换行符类型。但是,我从 popen 获取标准输出,所以我无法控制它。

我查看了 python 2.7 源代码,我想我可以以某种方式使用 TextIOWrapper 来尊重这两种 eol 类型。但是我不太确定我需要传递给它什么。我知道我需要向构造函数传递某种缓冲区,但我不知道如何从已打开的文件中获取缓冲区。

总而言之,我如何readline()在 python 中同时中断\n\r给出一个已经打开的文件/流?

4

1 回答 1

2

Popen.subprocess(和Popen.check_output如果方便功能对您来说足够了),有一个universal_newlines默认情况下为 的参数False,但当设置为时,True将为您提供将所有换行变体转换为\n.

于 2012-10-04T21:21:49.533 回答