我工作在Ubuntu的python3.4脚本,我参数的文件(编码为UTF-8),在Windows下生成。我必须逐行浏览文件(用\r\n
分隔),因为知道“行”包含我想保留的一些'\n'
。禁用从 r n自动更改为 n在python
我的问题是Python在打开时将文件的"\r\n"
转换为"\n"
。我试图用不同的模式打开("r"
,"rt"
,"rU"
)。
我发现的唯一解决方案是以二进制模式工作,而不是文本模式,打开"rb"
模式。
有没有办法做到这一点,而无需使用二进制模式或正确的方式来做到这一点?
编辑:解决方法:
with open(filename, "r", newline='\r\n') as f:
注意:模式和'encoding'参数在这里是可选的(''r''是任何地方的默认模式,除非你知道编码是'utf-8',否则它可能是正确的编码以使用;在Windows上,如果不是更常见的话,“utf-16”和特定于语言环境的代码页同样很常见)。 – ShadowRanger
@ShadowRanger:当然,但显式仍然比隐式更好。我总是强烈建议不要将编码保留为默认值。 –
解决方案是: '与开放(文件名,'r',encoding ='utf-8',newline ='\ r \ n')作为f:' 感谢您的线索 – lu1her