更改Python中的文件编码方案

更改Python中的文件编码方案,python,file,python-unicode,Python,File,Python Unicode,我正在尝试使用拉丁-1编码打开一个文件,以便生成具有不同编码的文件。我得到一个名称错误,说明未定义unicode。下面是我用来说明这一点的代码: sourceEncoding = "latin-1" targetEncoding = "utf-8" source = open(r'C:\Users\chsafouane\Desktop\saf.txt') target = open(r'C:\Users\chsafouane\Desktop\saf2.txt', "w") target.wri

我正在尝试使用拉丁-1编码打开一个文件,以便生成具有不同编码的文件。我得到一个
名称错误
,说明未定义
unicode
。下面是我用来说明这一点的代码:

sourceEncoding = "latin-1"
targetEncoding = "utf-8"
source = open(r'C:\Users\chsafouane\Desktop\saf.txt')
target = open(r'C:\Users\chsafouane\Desktop\saf2.txt', "w")

target.write(unicode(source.read(), sourceEncoding).encode(targetEncoding))

我根本不习惯处理文件,所以我不知道是否应该导入一个模块来使用“unicode”

您看到
unicode未定义这一事实表明您使用的是Python3。下面是一个代码片段,它将生成一个拉丁1编码的文件,然后执行您想要执行的操作,将拉丁1编码的文件读入并输出一个UTF8编码的文件:

# Generate a latin1-encoded file

txt = u'U+00AxNBSP¡¢£¤¥¦§¨©ª«¬SHY­®¯U+00Bx°±²³´µ¶·¸¹º»¼½¾¿U+00CxÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏU+00DxÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßU+00ExàáâãäåæçèéêëìíîïU+00Fxðñòóôõö÷øùúûüýþÿ'

latin1 = txt.encode('latin1')

with open('example-latin1.txt', 'wb') as fid:
    fid.write(latin1)

# Read in the latin1 file

with open('example-latin1.txt', 'r', encoding='latin1') as fid:
    contents = fid.read()
assert contents == latin1.decode('latin1') # sanity check

# Spit out a UTF8-encoded file

with open('converted-utf8.txt', 'w') as fid:
    fid.write(contents)
如果希望输出不是UTF8,请将
编码
参数添加到
打开
,例如

with open('converted-utf_32.txt', 'w', encoding='utf_32') as fid:
    fid.write(contents)

文档有一个.

并且,为了澄清,这是Python2,对吗?因为Python3没有
unicode
函数(字符串默认为UTF8)。