1

我希望我的代码在MacOS和Windows下都能正常写文本,所以我希望这个脚本有U模式的功能,同时有w+的功能。

我应该如何处理 file.open() 中的 mode 参数?

4

1 回答 1

2

不支持以通用换行模式写入。来自PEP

没有特别支持输出到具有不同换行约定的文件,因此模式“wU”也是非法的。

没有通用换行符的输出实现,Python 程序应该自己处理这个,或者用平台本地约定编写文件。这样做的原因是输入是困难的情况,在 Python 中将不同的换行符输出到文件中已经很容易了。

尝试时返回的错误实际上暗示了这一点Uw+

ValueError: universal newline mode can only be used with modes starting with 'r'

请注意,Ur+它不会失败,但它也不会在写入时进行任何替换;我可以f.write('test\r\n')在我的 Mac 上执行(OS X 使用 Unix 换行符),并且 Windows 换行符出现在我的文件中。

编辑:看来Python实际上默认提供了特定于平台的换行符输出,只要您保持b关闭状态。

...默认是使用文本模式,它可以在写入和读取时将 '\n' 字符转换为特定于平台的表示。

于 2012-09-11T03:18:53.697 回答