gpt4 book ai didi

用于 win 和 cygwin 的 python3 - 缓冲区中的行结尾

转载 作者:太空宇宙 更新时间:2023-11-04 05:12:33 25 4
gpt4 key购买 nike

安装:python3.6 for windows in Cygwin(必须使用 Win 版本,因为 3.5 中引入的功能和 Cygwin 停留在 3.4)

如何从 python 脚本(而不是 \r\n)输出缓冲区(标准输出)中获取 \n 新行?输出是一个路径列表,我想每行获取一个路径以供其他 Cygwin/Windows 工具进一步处理。

到目前为止我找到的所有答案都与文件写入有关,我只想修改写入标准输出的内容。到目前为止,摆脱 \r 的唯一可靠方法是通过 sed 's/\\10//' 管道结果,这很尴尬。

奇怪的是,即使是使用脚本输出的 Windows 应用程序也不接受它,并带有如下消息:

Can't find file <asdf.txt
>

(注意>之前的换行符)

据称 sys.stdout.write 正在执行纯输出,但在执行时:

sys.stdout.write(line)

我得到一个没有任何分隔的路径列表。如果我引入任何类似于 NL(\n\012 等)的内容,它会自动转换为 CRLF(\r\n) .如何停止这种转换?

最佳答案

您需要以二进制模式写入stdout;默认是文本模式,翻译一切你写的。

根据 Issue4571您可以通过直接写入 stdout 使用的内部缓冲区来执行此操作。

sys.stdout.buffer.write(line)

请注意,如果您正在编写 Unicode 字符串,您需要先将它们编码为字节字符串。

sys.stdout.buffer.write(line.encode('utf-8')) # or 'mbcs'

关于用于 win 和 cygwin 的 python3 - 缓冲区中的行结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42658130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com