首先
dir_names
在腌制时效果很好
dir_names = collections.namedtuple('dir_names', ['mark', 'category'])
pickle.dump(dir_names, open('tmp.bin', 'wb'))
我想将
dir_name
设为常量
DIR_NAMES = collections.namedtuple('dir_names', ['mark', 'category'])
pickle.dump(DIR_NAMES, open('tmp.bin', 'wb'))
但是在腌制它时,我收到了这个错误
Traceback (most recent call last):
File "/Users/zyq/CC_Cat/warc_process.py", line 376, in <module>
pickle.dump(DIR_NAMES, open('tmp.bin', 'wb'))
_pickle.PicklingError: Can't pickle <class '__main__.dir_names'>: attribute lookup dir_names on __main__ failed
我想知道为什么它在成为常量时会变坏,以及为什么
DIR_NAMES
在__main__.dir_names
被降低了
我尝试了
defaultdict
效果很好
DD = collections.defaultdict(int) pickle.dump(DD, open('tmp.bin', 'wb'))
看来
pickle
需要在 namedtuple("DIR_NAMES", ...)
中与变量 DIR_NAMES = ...
中使用相同的名称
DIR_NAMES = collections.namedtuple('DIR_NAMES', ['mark', 'category'])
pickle.dump(DIR_NAMES, open('tmp.bin', 'wb'))
您也可以在答案中看到这个问题: