如何将代码对象保存到文件?

4 投票
1 回答
3017 浏览
提问于 2025-04-17 05:10

如何将代码对象(__code__)保存到文件中?

>>> c
<code object foo at 0x022E7660, file "<console>", line 1>
>>> pickle.dump(c, f)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
_pickle.PicklingError: Can't pickle <class 'code'>: attribute lookup builtins.code failed
>>> f.write(c)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: 'code' does not support the buffer interface

1 个回答

10

我不太清楚你想要做什么,但你可以使用marshal这个模块来实现这个功能:

>>> import marshal
>>> def f():
...    print 'f'
>>> marshal.dump(f.__code__, open('test.dump'))
>>> code = marshal.load(open('test.dump'))
>>> f.__code__ == code
True
>>> import dis
>>> dis.dis(code)
  2           0 LOAD_CONST               1 ('f')
              3 PRINT_ITEM          
              4 PRINT_NEWLINE       
              5 LOAD_CONST               0 (None)
              8 RETURN_VALUE  

撰写回答