【问题标题】:Writing newline with Python codecs.write使用 Python codecs.write 编写换行符
【发布时间】:2015-02-10 18:45:18
【问题描述】:
f = codecs.open('import.txt', 'w', 'utf-8')

for x in list:
    string = "Hello"
    f.write(string+'\n')

f.close()

由于某种原因,此代码不会将换行符写入文件,就像我使用 open 函数而不是 codecs.open 时那样。

我该如何解决这个问题?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

codecs.open() does not handle newlines correctly ('U' mode is deprecated):

底层编码文件始终以二进制模式打开。不 '\n' 的自动转换是在读写时完成的。

改用内置的open() 函数。如果您希望相同的代码在同一来源的 Python 2 和 3 上工作;你可以使用io.open()

【讨论】:

    【解决方案2】:

    不确定你在说什么......还向你展示了如何拥有一个完整的可运行示例

    >>> import codecs
    >>> f = codecs.open('import.txt', 'w', 'utf-8')
    >>> f.write("hello\nworld\n")
    >>> f.close()
    >>> print repr(open("import.txt").read())
    'hello\nworld\n'
    >>>
    

    根据 cmets,真正的答案是

    不要使用记事本

    【讨论】:

    • 这似乎有效,但奇怪的是,当我在记事本中打开文本文件时没有换行符。
    • 刚试过notepad++,换行确实出现在那里。谢谢。
    • 记事本基本上是有史以来最糟糕的文本编辑器......只需从系统中删除它
    • 如果文件以文本模式打开,stdio 不会将 \n 转换为 \r\n(这种情况)?
    • 废话,codecs 总是以二进制形式打开底层流。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2020-01-22
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    相关资源
    最近更新 更多