我有一个python脚本,当在Windows机器上运行,并在Mac上运行时,给出不同的输出。 在深入挖掘的过程中,我发现这是因为当Python在Mac上从一个文件读取换行符时,它被读入\r\n
,而在Windows中以某种方式消失。
因此,如果我将脚本中的每个\n
都更改为\r\n
,则在Mac上可以正常工作。 但是,如果我这样做,它停止在Windows PC上工作。
有没有简单的方法来解决这个问题?
我想这可能取决于你正在阅读的内容,但是内建的open()函数需要一个'mode'参数,如果你传递了'U'这个模式,Python将处理十字中的换行符平台方式透明。 它要求用通用的新行支持来构建Python,但要测试一下!
不同的平台对于“新行”有不同的代码。 Windows有\ r \ n,Unix有\ n,旧的Mac有\ r并且有一些系统也有\ n \ r。
当你在Python 3中以文本模式打开一个文件时,它将把所有的换行符转换成'\ n'并完成它。
infile = open("filename", 'r')
文本模式是默认的,所以如果你什么都不说,就是文本模式。 但是明确地说:
infile = open("filename", 'rt')
如果您不希望翻译行结束,请以二进制模式打开文件:
infile = open("filename", 'rb')
在Python 2中是不同的。 这种转换只能在Windows上默认进行。 如果您希望在其他平台上发生,可以添加通用换行标志:
infile = open("filename", 'rU')
但是,你说你在使用Python 3,而且在所有平台上都是以文本模式发生的,所以添加U标志应该没有什么区别。
在Python 3中,使用open()中的关键字参数“newline ='\ n”在写入文本文件时使用指定的行分隔符。 有关更多信息,请参阅:
https://pythonconquerstheuniverse.wordpress.com/2011/05/08/newline-conversion-in-python-3/