2011-10-28 5 views
2

코드 개체 (_ _ 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

코드 객체는 본질적으로 플랫폼에 따라 다르며'pickle'은 플랫폼 독립적 인 형식입니다. 코드 객체 플랫폼을 독립적으로 표현하는 쉬운 방법은 없지만 대개는 필요하지 않습니다. 무엇을 성취하려고합니까? –

답변

6

회원님이 일을하려고하고 있지만이에 대한 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 
관련 문제