试图将tau ='τ'写入文本文件

时间:2018-03-19 03:57:24

标签: python python-3.x

我正在尝试将html写入文本文件并遇到问题。起初我无法打印它,但设置翻译有帮助,

non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)

(在本网站上找到)。

令人讨厌的是,打印和书写文字可能与Python有“不同的交易”;这里的代码失败了:

#--------*---------*---------*---------*---------*---------*---------*---------*
# Desc: writing tau = 'τ'
#--------*---------*---------*---------*---------*---------*---------*---------*
import os, sys

while True:
    tau = 'τ'
    os.chdir("C:\\Users\\Mike\\Desktop")
    dd = open('tmp.txt', 'w')
    dd.write(tau + '\n')
    dd.close()
    sys.exit()

输出:

Traceback (most recent call last):
  File "C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\board.py", line 11, in <module>
    dd.write(tau + '\n')
  File "C:\Users\Mike\AppData\Local\Programs\Python\Python36-32\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u03c4' in position 0: character maps to <undefined>

2 个答案:

答案 0 :(得分:1)

打开文件时需要指定编码。 UTF-8在这里几乎总是正确的选择。

import os

tau = "τ"
os.chdir(r"C:\Users\Mike\Desktop")

with open("tmp.txt", "w", encoding='utf-8') as dd:
    print(tau, file=dd)

这是许多人在使用open时忘记的事情,但这很重要。

答案 1 :(得分:1)

听起来您需要在打开文件时指定编码。来自open documentation

  

默认编码取决于平台(无论如何)   locale.getpreferredencoding()返回

如果您的默认系统编码不包含τ字符,那么您将收到此错误。尝试指定UTF-8。假设您使用的是Python 3:

dd = open('tmp.txt', 'w', encoding = 'utf-8')