使用python在linux上用DOS行结尾编写文本文件

gau*_*ann 19 python windows newline

我想使用在Linux上运行的python编写带有DOS/Windows行结尾'\ r \n'的文本文件.在我看来,必须有比手动放一个"\ r \n"在每行的末尾或者使用终止转换工具行更好的办法.理想情况下,我希望能够执行一些操作,例如将os.linesep分配给我在编写文件时要使用的分隔符.或者在我打开文件时指定行分隔符.

gau*_*ann 76

对于Python 2.6及更高版本,模块中的open函数io有一个可选的换行参数,可让您指定要使用的换行符.

例如:

import io
with io.open('tmpfile', 'w', newline='\r\n') as f:
    f.write(u'foo\nbar\nbaz\n')
Run Code Online (Sandbox Code Playgroud)

将创建一个包含以下内容的文件:

foo\r\n
bar\r\n
baz\r\n
Run Code Online (Sandbox Code Playgroud)

  • 你能否接受这个(你的)答案而不是目前接受的答案?对于那些坚持2.5或更低的人来说,留下另一个人是好的,但我认为这对大多数人来说是更好的答案. (6认同)
  • 在python3中,您可以使用带有`newline`参数的内置`open` (3认同)

Ign*_*ams 1

只需编写一个类似文件,包装另一个类似文件并转换\n\r\n写入时即可。

例如:

class ForcedCrLfFile(file):
    def write(self, s):
        super(ForcedCrLfFile, self).write(s.replace(r'\n', '\r\n'))
Run Code Online (Sandbox Code Playgroud)

  • `def write(self, s):`parent.write(self, s.replace(r'\n', '\r\n'))` (2认同)