windows 在python中禁用从\r\n到\n的自动更改

vohkndzv  于 2022-12-24  发布在  Windows
关注(0)|答案(2)|浏览(124)

我在ubuntu下编写python3.4脚本,其中我引入了一个参数a文件(编码为UTF-8),该文件是在Windows下生成的,我必须逐行(以\r\n分隔)查看该文件,因为我知道“行”中包含一些我想要保留的'\n'
我的问题是Python在打开文件时将文件的"\r\n"转换为"\n",我尝试过用不同的模式打开("r""rt""rU")。
我找到的唯一解决方案是在二进制模式而不是文本模式下工作,以"rb"模式打开。
有没有一种方法可以做到这一点,而不工作在二进制模式或一个适当的方式来做到这一点?

7jmck4yq

7jmck4yq1#

Martijn Pieters的解为:

with open(filename, "r", newline='\r\n') as f:

此答案是由CC BY-SA 3.0下的OP lu1heredit的形式发布的问题“禁用python中从\r\n到\n的自动更改”的答案。

vuktfyat

vuktfyat2#

newline关键字参数设置为open()'\r\n',或者设置为空字符串:

with open(filename, 'r', encoding='utf-8', newline='\r\n') as f:

这告诉Python只在\r\n行终止符上拆分行; \n在输出中保持不变。如果将其设置为'',则\n也被视为行终止符,但\r\n不会转换为\n
open()函数文档中:

  • newline* 控制通用换行符模式的工作方式(它只适用于文本模式)。它可以是None'''\n''\r''\r\n'[...] 如果它是'',则启用通用换行符模式,但行结束符以未翻译的形式返回给调用方。如果它具有任何其他法律的值,输入行仅以给定字符串结束,并且行结尾未翻译地返回给调用者。

我大胆强调。

相关问题