2024-04-19 22:46:57 发布
网友
我想写一个文件:
for i in range(0,3): f.write(str(l[i])+"\n")
当我用记事本打开.txt文件时,输入并没有用换行符隔开。你知道吗
您的文件可能以二进制模式打开,使用python2。你知道吗
通过以文本模式而不是二进制模式打开文件来避免这些换行问题("wb",在python 2中允许使用文本):
"wb"
with open("foo.txt","w") as f: for i in range(0,3): f.write(str(l[i])+"\n")
这在任何系统上都是可移植的,但在Windows上确实很有趣。你知道吗
在Windows上,文本模式会发出一个额外的\r回车字符,因此像notepad这样的基本程序会理解有换行符(在Windows上是本机的\r\n)。如果您也使用"r"进行读取,那么这个回车字符是透明的(不会妨碍您)。你知道吗
\r
notepad
\r\n
"r"
python3的打开模式更加清晰:不可能以二进制格式打开文件并在其中写入文本。因此,几乎不可能犯这样的错误,如果反过来做,可能会致命。(就像臭名昭著的将二进制数据写入文本“破坏”文件一样,用13+10替换所有10字符)
13
10
您的文件可能以二进制模式打开,使用python2。你知道吗
通过以文本模式而不是二进制模式打开文件来避免这些换行问题(
"wb"
,在python 2中允许使用文本):这在任何系统上都是可移植的,但在Windows上确实很有趣。你知道吗
在Windows上,文本模式会发出一个额外的
\r
回车字符,因此像notepad
这样的基本程序会理解有换行符(在Windows上是本机的\r\n
)。如果您也使用"r"
进行读取,那么这个回车字符是透明的(不会妨碍您)。你知道吗python3的打开模式更加清晰:不可能以二进制格式打开文件并在其中写入文本。因此,几乎不可能犯这样的错误,如果反过来做,可能会致命。(就像臭名昭著的将二进制数据写入文本“破坏”文件一样,用
13
+10
替换所有10
字符)相关问题 更多 >
编程相关推荐