在Linux上用Python写入带DOS行结束符的文本文件

25 投票
6 回答
44601 浏览
提问于 2025-04-15 21:37

我想在Linux上用Python写文本文件,但希望文件里的换行符是DOS/Windows格式的'\r\n'。我觉得总是手动在每一行的末尾加上'\r\n',或者使用换行符转换工具,这样做太麻烦了。理想情况下,我希望能像给os.linesep赋值那样,直接指定我想用的换行符,或者在打开文件的时候就能指定换行符。

6 个回答

2

你可以看看这个 PEP,里面有一些参考资料。

更新:

@提问者,你可以试着创建类似这样的东西

import sys
plat={"win32":"\r\n", 'linux':"\n" } # add macos as well
platform=sys.platform
...
o.write( line + plat[platform] )
94

对于Python 2.6及以后的版本,open函数在io模块中有一个可选的换行符参数,这个参数可以让你选择想要使用的换行符。

举个例子:

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

这段代码会创建一个包含以下内容的文件:

foo\r\n
bar\r\n
baz\r\n
1

只需要写一个文件类,它可以包裹另一个文件类,并且在写入的时候把 \n 转换成 \r\n

比如:

class ForcedCrLfFile(file):
    def write(self, s):
        super(ForcedCrLfFile, self).write(s.replace(r'\n', '\r\n'))

撰写回答