使用open()Python 3进行文件编码

时间:2012-12-29 10:23:00

标签: python encoding utf-8

我有一个使用open()创建多个文件的脚本。 所有文件都已成功创建,似乎没有问题, 但是在尝试运行res.py时,它会崩溃,显示以下错误:

  File "C:\Users\Mirac\Python\res.py", line 38
SyntaxError: Non-UTF-8 code starting with '\xd7' in file C:\Users\Mirac\Python\res.py on line 38, but no encoding declared;

通过IDLE打开文件时,我得到“指定文件编码”窗口:

The file's encoding is invalid for Python 3.x. 
IDLE will convert it to UTF-8.
What is current encoding of the file?

这是res.py的第38行:

print("Configuration file updated.")

那么,我可以在创建过程中将编码设置为文件,如下所示:

open("res.py", "w").encoding("UTF-8")
with open("res.py", "a") as file:
    file.write("File contents here")

如果没有,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这对于如何在Python中打开和写入文件不是一个问题。 Python试图读取你的python 文件是个问题。您需要为文件指定编码,以便Python可以正确读取.py文件。

您需要弄清楚编辑此文件时编辑器使用的编码。将其作为注释添加到文件的顶部(第一行或第二行):

# coding: latin-1

请参阅Python Unicode HOWTO的Unicode Literals in Python Source Code部分。

请注意,您提供的错误消息不完整,以下文字是其中的一部分:

see http://www.python.org/peps/pep-0263.html for details

linked PEP 263更详细地解释了源代码编码。