设置:python3.6 for Cygwin中的窗口(必须使用Win版本,因为3.5中引入了功能,Cygwin停留在3.4)
如何从python脚本(而不是\n
)获取缓冲区(stdout)输出中的\r\n
个新行?输出是一个路径列表,我希望每行获得一个以供其他Cygwin / Windows工具进一步处理。
到目前为止我发现的所有答案都是处理文件写入,我只想修改写入stdout的内容。到目前为止,摆脱\r
的唯一可靠方法是通过sed 's/\\10//'
来管理结果,这很尴尬。
奇怪的是,即使是使用脚本输出的Windows应用程序也不会接受以下消息:
Can't find file <asdf.txt
>
(注意&gt;之前的换行符)
据说sys.stdout.write
正在做纯输出,但在做的时候:
sys.stdout.write(line)
我得到一个没有任何分离的路径列表。如果我介绍类似NL(\n
,\012
等)的任何内容,它会自动转换为CRLF(\r\n
)。如何阻止这种转换?
答案 0 :(得分:1)
您需要以二进制模式写入stdout
;默认为文本模式,用于翻译您编写的所有内容。
根据Issue4571,您可以直接写入stdout
使用的内部缓冲区。
sys.stdout.buffer.write(line)
请注意,如果您正在编写Unicode字符串,则需要先encode
将它们用于字节字符串。
sys.stdout.buffer.write(line.encode('utf-8')) # or 'mbcs'