如何在全局范围内更改通用行结束行为?
How can I alter the universal line ending behavior globally?
我想在 Windows 上写出所有以 LF 而不是 CRLF 结尾的文本文件。不仅适用于我的代码,还适用于所有其他第三方依赖项。
我知道我可以 open(..., newline='\n', ...)
获取我的代码。但是有写入文件的外部包,它们 open()
没有这样的选项,所以这些文件在 universal line ending mode 中打开并最终以 CRLF 写入。
如何在 Windows 上将默认行为从 CRLF 更改为 LF?显然试图覆盖 os.linesep = '\n'
没有成功。
你可以monkey-patch open
:
import builtins
orig_open = open
def my_open(
file,
mode="r",
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None,
):
return orig_open(
file,
mode,
buffering,
encoding,
errors,
newline="\n",
closefd=closefd,
opener=None,
)
builtins.open = my_open
我想在 Windows 上写出所有以 LF 而不是 CRLF 结尾的文本文件。不仅适用于我的代码,还适用于所有其他第三方依赖项。
我知道我可以 open(..., newline='\n', ...)
获取我的代码。但是有写入文件的外部包,它们 open()
没有这样的选项,所以这些文件在 universal line ending mode 中打开并最终以 CRLF 写入。
如何在 Windows 上将默认行为从 CRLF 更改为 LF?显然试图覆盖 os.linesep = '\n'
没有成功。
你可以monkey-patch open
:
import builtins
orig_open = open
def my_open(
file,
mode="r",
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None,
):
return orig_open(
file,
mode,
buffering,
encoding,
errors,
newline="\n",
closefd=closefd,
opener=None,
)
builtins.open = my_open