如何在U模式和w +模式下写入文件?

时间:2012-09-11 02:08:13

标签: python file-io

我希望我的代码可以在MacOS和Windows中定期编写文本,所以我希望这个脚本具有模式U的功能,同时具有w +的功能。

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

1 个答案:

答案 0 :(得分:2)

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

  

对于具有不同的文件输出没有特殊支持       换行约定,所以模式“wU”也是非法的。

  

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

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

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

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

修改:只要您关闭b,就会显示Python actually offers platform-specific newline output by default anyway

  

...默认情况下使用文本模式,可以在写入时将“\ n”字符转换为特定于平台的表示,然后在阅读时返回。