在Mac和Windows上处理python中的换行符

2024-05-26 22:56:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,当在Windows机器上运行和在Mac上运行时,它给出了不同的输出。在深入研究时,我发现这是因为当Python在Mac(从文件)上换行时,它会读入\r\n,而在Windows中\r会消失。

因此,如果我将脚本中的每一个\n更改为\r\n,那么它在Mac上运行良好。但如果我这样做,它就会停止在Windows PC上工作

有什么简单的方法可以解决这个问题吗?


Tags: 方法脚本机器windowsmacpc深入研究消失
3条回答

在Python3中,在open()中使用关键字参数“newline='\n'”在写入文本文件时使用指定的行分隔符。有关详细信息,请参见:

https://pythonconquerstheuniverse.wordpress.com/2011/05/08/newline-conversion-in-python-3/

http://docs.python.org/3/library/functions.html#open

我想这可能取决于您从中读取的内容,但是内置的open()函数接受一个“mode”参数,如果您为模式传递“U”,Python将以跨平台的方式透明地处理换行符。它要求Python使用通用的newline支持来构建,但是要测试它!

http://docs.python.org/library/functions.html#open

不同的平台对“新线”有不同的编码。Windows有,Unix有,旧Mac有,是的,有些系统也有。

当您在Python3中以文本模式打开一个文件时,它会将所有新行转换为'\n',并对其进行处理。

infile = open("filename", 'r')

文本模式是默认的,所以如果你什么都不说,那就是文本模式。但最好说清楚:

infile = open("filename", 'rt')

如果不希望发生行尾的转换,请以二进制模式打开文件:

infile = open("filename", 'rb')

在Python 2中它是不同的。在那里,这种转换只能在Windows上默认发生。 如果希望在其他平台上进行,可以添加通用换行标志:

infile = open("filename", 'rU')

但是,您说您在Python 3上,并且在all平台上以文本模式发生,所以添加U标志应该没什么区别。

相关问题 更多 >

    热门问题