为什么`file.write(chr(128))`在Python中返回错误,即使`print(chr(128))`工作正常?

为什么`file.write(chr(128))`在Python中返回错误,即使`print(chr(128))`工作正常?,python,character-encoding,character,byte,fwrite,Python,Character Encoding,Character,Byte,Fwrite,这个问题正如标题所示。我的问题是,对于N=128,file.write(chr(N))失败并返回错误:UnicodeEncodeError:“charmap”编解码器无法对字符“\x80”进行编码。 我认为非常奇怪的是,print()中允许的内容会在file.write()中返回错误。但是,对于N=255,它不会返回错误,因此,对于所有N>127,它并不是简单地失败 本例的全部代码如下: N=128 print(chr(N)) #This works just fine. file=open

这个问题正如标题所示。我的问题是,对于N=128,
file.write(chr(N))
失败并返回错误:
UnicodeEncodeError:“charmap”编解码器无法对字符“\x80”进行编码。

我认为非常奇怪的是,
print()
中允许的内容会在
file.write()中返回错误。但是,对于N=255,它不会返回错误,因此,对于所有N>127,它并不是简单地失败

本例的全部代码如下:

N=128

print(chr(N)) #This works just fine.

file=open('output.txt','w')
file.write(chr(N))  #This one returns errors!
file.close() 
以下是:

file=open('output.txt','w',encoding="utf-8")
file.write(chr(N)) #No error but output.txt is empty!
file.close()
它没有给出错误,但输出文件为空


我的python版本是Anaconda 3.6.5

请确保使用utf-8编码打开文件:

file = open('file_name.txt', 'w', encoding="utf8", newline='')

此解决方案适用于python3.x。

如何打开该文件?您使用的是什么版本的python?打印和写入都在2.7和3.7中进行,但是对于我来说,这两种方法都不适用。我根据您的两个评论更新了这个问题。只是为了澄清和避免进一步的错误:AcANDA 3不是Python版本。请考虑选择正确的问题回答。您在打开编辑器之前关闭文件吗?请您澄清一下。您使用的是哪个Python版本?在3.6.5中,一切正常。更新了问题,并给出了结束语。