&引用\";写入文件时不使用python

&引用\";写入文件时不使用python,python,python-3.x,Python,Python 3.x,我编写了python代码来写入如下文件: with codecs.open("wrtieToThisFile.txt",'w','utf-8') as outputFile: for k,v in list1: outputFile.write(k + "\n") 列表1的类型为(char,int) 这里的问题是,当我执行此操作时,文件没有按预期用“\n”分隔。你知道这里有什么问题吗?我想这是因为 with 感谢您的帮助。提前谢谢

我编写了python代码来写入如下文件:

   with codecs.open("wrtieToThisFile.txt",'w','utf-8') as outputFile:
            for k,v in list1:
                outputFile.write(k + "\n")
列表1的类型为(char,int) 这里的问题是,当我执行此操作时,文件没有按预期用“\n”分隔。你知道这里有什么问题吗?我想这是因为

with
感谢您的帮助。提前谢谢。
(我正在将Python 3.4与“用于Visual Studio的Python工具”版本2.2一起使用)

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

从这里找到了它:


我必须在Windows中使用“\r\n”,因为“\r\n”可以工作。

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

outputFile.write(k + os.linesep)

显然,您必须在某个地方导入操作系统。

每,
编解码器。打开
以二进制模式打开底层文件,而不进行行尾转换。坦率地说,
codecs.open
是半不推荐的;在Python2.7及以后的版本中,
io.open
(与Python3.x中的内置
open
函数相同)处理了99%的人们使用
codecs.open
的情况,但更好(更快,而且没有像行尾这样愚蠢的问题)。如果您在Python3上可靠地运行,只需使用普通的
open
;如果您也需要在Python 2.7上运行,请导入
io
并使用
io。打开

谢谢,现在就解决了。不太便携,请使用
os.linesep
,它将为您所使用的任何系统设置正确的行分隔符。谢谢,但我尝试了它,它只将os.linesep打印到我想要换行的位置。我正在windows中写入文本文件。甚至我也想要一些可移植的东西。我不只是使用编解码器。简单地打开,它是为了满足其他要求,否则不会对我所需的文件进行解码,除非你的文件是在一个伪编解码器(
hex
rot13
等等)中,
io.open
应该处理它。它可以读取和写入非ASCII编码的文件;它不是Py2默认的
open
,它只读取
str
,而不是
unicode
。这是在添加双线