我希望我的代码在MacOS和Windows下都能正常写文本,所以我希望这个脚本有U模式的功能,同时有w+的功能。
我应该如何处理 file.open() 中的 mode 参数?
不支持以通用换行模式写入。来自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' 字符转换为特定于平台的表示。