zmq 发表于 2020-8-31 11:21:58

29课后题

请输入文件名:something.txt
请输入内容【单独输入':w'保存退出】:
从明天起,做一个幸福的人

回车以后会报错:
    return codecs.charmap_encode(input,self.errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-11: character maps to <undefined>
>>>

代码是:
def file_write(file_name):
    f = open(file_name, 'w')
    print('请输入内容【单独输入\':w\'保存退出】:')

    while True:
      write_some = input()
      if write_some != ':w':
            f.write('%s\n' % write_some)
      else:
            break

    f.close()

file_name = input('请输入文件名:')
file_write(file_name)

永恒的蓝色梦想 发表于 2020-8-31 11:28:19

请发完整报错信息,包括 TraceBack

学习型motor 发表于 2020-8-31 11:34:54

好像没什么问题呀,我3.8.5运行没问题啊

昨非 发表于 2020-8-31 12:09:25

亲测没问题啊

zmq 发表于 2020-8-31 12:20:18

永恒的蓝色梦想 发表于 2020-8-31 11:28
请发完整报错信息,包括 TraceBack

Traceback (most recent call last):
File "C:/Users/Henry Wang/Desktop/29.py", line 15, in <module>
    file_write(file_name)
File "C:/Users/Henry Wang/Desktop/29.py", line 8, in file_write
    f.write('%s\n' % write_some)
File "C:\Users\Henry Wang\AppData\Local\Programs\Python\Python38-32\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-8: character maps to <undefined>

sunrise085 发表于 2020-8-31 13:42:12

zmq 发表于 2020-8-31 12:20
Traceback (most recent call last):
File "C:/Users/Henry Wang/Desktop/29.py", line 15, in
   ...

看错误提示应该是编码问题
添加上编码格式试一下,修改一下打开文件的那一行
f=open(file_name, 'w', encoding="utf-8")

zmq 发表于 2020-8-31 14:44:54

sunrise085 发表于 2020-8-31 13:42
看错误提示应该是编码问题
添加上编码格式试一下,修改一下打开文件的那一行

现在可以了,请问encoding那个是什么意思,为啥我需要加这个。

sunrise085 发表于 2020-8-31 14:50:28

zmq 发表于 2020-8-31 14:44
现在可以了,请问encoding那个是什么意思,为啥我需要加这个。

encoding是编码格式。
每个文件都有自己的编码格式,你之前的程序打开文件的时候没有设置编码格式,然后写文件的时候就报出编码错误了。
常见的编码格式有:utf-8,GBK,等等
有些时候写文件时,还需要先把要写的内容进行转码才能写进去。以后你会遇到的。
问题解决了就给个最佳答案吧
页: [1]
查看完整版本: 29课后题