【问题标题】:"\n" not working in python while writing to files“\n”在写入文件时无法在 python 中工作
【发布时间】:2015-12-16 05:35:42
【问题描述】:

我编写了 python 代码来写入这样的文件:

   with codecs.open("wrtieToThisFile.txt",'w','utf-8') as outputFile:
            for k,v in list1:
                outputFile.write(k + "\n")

list1 的类型为 (char,int) 这里的问题是,当我执行此操作时,文件没有按预期被“\n”分隔。知道这里有什么问题吗?我认为是因为

with

感谢任何帮助。提前致谢。 (我将 Python 3.4 与“Visual Studio 的 Python 工具”2.2 版一起使用)

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    如果您在 Windows 上,\n 不会终止一行。
    老实说,我很惊讶您遇到了问题,默认情况下,任何以文本模式打开的文件都会自动将\n 转换为os.linesep。我不知道codecs.open() 是什么,但它必须以二进制模式打开文件。
    鉴于这种情况,您需要显式添加os.linesep

    outputFile.write(k + os.linesep)
    

    显然你必须在某个地方import os

    【讨论】:

    • 这是添加双线
    【解决方案2】:

    从这里想出来:

    How would I specify a new line in Python?

    我必须像在 Windows 中一样使用“\r\n”,“\r\n”才能工作。

    【讨论】:

    • 不是很便携,使用os.linesep,它将为您使用的任何系统放置正确的行分隔符。
    • 谢谢,但我试过了,它只是在我想要换行符的地方打印 os.linesep。我正在写入 Windows 中的文本文件。即使我想要一些便携的东西。
    【解决方案3】:

    codecs.open's documentationcodecs.open 以二进制模式打开底层文件,没有行结束转换。坦率地说,codecs.open 已被半弃用;在 Python 2.7 及更高版本中,io.open(与 Python 3.x 中的内置 open 函数相同)处理了人们过去使用 codecs.open 的 99% 的情况,但更好(更快,而且没有愚蠢行尾等问题)。如果您在 Python 3 上可靠地运行,只需使用普通的 open;如果您还需要在 Python 2.7 上运行,请导入 io 并使用 io.open

    【讨论】:

    • 我不只是简单地使用 codecs.open,它是为了其他要求,否则不会解码我所需的文件
    • 除非您的文件位于伪编解码器之一(hexrot13 等)中,否则io.open 应该处理它。它可以很好地读写非 ASCII 编码的文件;它不是 Py2 的默认 open,它只会读取 str,而不是 unicode
    【解决方案4】:

    如果您在 Windows 上,请尝试“\r\n”。或者使用能够识别 unix 样式新行的编辑器打开它。

    【讨论】:

    • 谢谢,刚刚想通了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    相关资源
    最近更新 更多