Python 如何pickle.load字符串,然后file.write它?

Python 如何pickle.load字符串,然后file.write它?,python,utf-8,pickle,codec,cyrillic,Python,Utf 8,Pickle,Codec,Cyrillic,显而易见的方法返回一个异常 我试试这个: import codecs import pickle with codecs.open('1.pickle', 'r') as new: somebiglist = pickle.load(new) #a big list with inner lists for iter in somebiglist: print 'Some cyrillic string. %s' % iter[0] #Prints out to console

显而易见的方法返回一个异常

我试试这个:

import codecs
import pickle
with codecs.open('1.pickle', 'r') as new:
    somebiglist = pickle.load(new) #a big list with inner lists
for iter in somebiglist:
    print 'Some cyrillic string. %s' % iter[0]

#Prints out to console perfectly

with codecs.open('anyfile.txt', 'w', 'utf-8') as anyfile:
    for iter in somebiglist:
        anyfile.write('%s \n' % iter[0])
返回:

Traceback (most recent call last):
  File "/PythonProject/1.py", line 38, in <module>
    anyfile.write('%s \n' % iter[0])
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0412' in position 0: ordinal not in range(128)
回溯(最近一次呼叫最后一次):
文件“/PythonProject/1.py”,第38行,在
anyfile.write(“%s\n”%iter[0])
UnicodeEncodeError:“ascii”编解码器无法对位置0中的字符u'\u0412'进行编码:序号不在范围内(128)
如果我在脚本中生成相同的字符串(没有从pickle文件加载),那么它将被写入到文件中,不会出现任何问题


编码在哪里?我尝试了“编码”、“utf-8”和“wb/rb”选项的所有变体。

pickle中的信息是什么样的?或者更好的是,它是如何建造的?它是由
pickle.dump
编写的列表(一些西里尔文字符串)还是用
文件编写的。write
?@Mike McKerns它是pickle.dump'edDid您尝试不使用“utf-8”吗?@Banana我这样做了。在编写“1.pickle”时,我尝试了使用和不使用“utf-8”编解码器,尝试
anyfile.write(u'%s\n'%iter[0])