Як захаваць аб'ект кода ў файле?

Як захаваць аб'ект кода (_ _ _ _ код) у файле?

>>> c
", line 1>
>>> pickle.dump(c, f)
Traceback (most recent call last):
  File "", line 1, in 
_pickle.PicklingError: Can't pickle : attribute lookup builtins.code failed
>>> f.write(c)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'code' does not support the buffer interface
2
аб'екты Кодавыя па сваёй сутнасці залежыць ад платформы, а расол ўяўляе сабой незалежны ад платформы фармат. Там няма простага спосабу прадставіць аб'ект кода платформы самастойна, але, як правіла, не трэба. Што вы спрабуеце дасягнуць?
дададзена аўтар Sven Marnach, крыніца

2 адказы

Не ўпэўнены, што вы спрабуеце зрабіць, але вы можаце выкарыстоўваць маршалам модуль для гэтага:

>>> 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  
6
дададзена

I googled around and found something which could be useful: http://python.about.com/od/pythonstandardlibrary/a/pickle_intro.htm

прывітанне

3
дададзена
Калі ласка, не пакідайце толькі спасылку ў якасці адказу.
дададзена аўтар agf, крыніца
Акрамя таго, усё роўна сказаць, што менавіта карысна аб гэтым тэксце? Glossing над ім, я бачыў толькі пару фраз, якія ўкараняюць расол ў цэлым.
дададзена аўтар delnan, крыніца