在使用python中的文件时如何保留行尾样式?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (37)

我正在寻找一种方法来确保文件的行尾样式在python程序中在读取、编辑和编写过程中得到维护。

Python具有通用的文件结束支持,可以将所有行尾转换为\n当文件被读取时,然后在写入文件时将它们全部转换为系统缺省值。在我的示例中,我希望仍然进行初始转换,但随后使用原始的EOL样式而不是系统默认值来编写文件。

有标准的方法来做这种事吗?如果没有,是否有检测文件的EOL样式的标准方法?

假设没有标准的方法来做到这一点,一个可能的工作流程是:

  1. 以二进制模式读取文件。
  2. 解码为utf-8(或任何需要的编码)。
  3. 检测EOL风格。
  4. 将所有行尾转换为\n
  5. 处理文件。
  6. 将所有行尾转换为原始样式。
  7. 编码文件。
  8. 以二进制模式写入文件。

在这个工作流程中,做第二步最好的方法是什么?

提问于
用户回答回答于

用python的通用换线支撑:

f = open('randomthing.py', 'rU')
fdata = f.read()
newlines = f.newlines
print repr(newlines)

newlines如果文件使用分隔符的混合,则包含文件的分隔符或分隔符的元组。

用户回答回答于

若要保留原始行尾,请使用newlines=''读或写未翻译的行尾。

with open('test.txt','r',newline='') as rf:
    content = rf.read()
content = content.replace('old text','new text')
with open('testnew.txt','w',newline='') as wf:
    wf.write(content)

扫码关注云+社区

领取腾讯云代金券