retrieve source code from code object as returned by compile()

Justin Ezequiel justin.ezequiel at gmail.com
Wed Apr 23 20:58:38 EDT 2014


Is there a way to get the original source?
I am trying to retrieve the main script from a py2exe'd old program.
The programmer neglected to commit to SVN before leaving.

Using "Easy Python Decompiler" I am able to get the source for the imported modules.
Using "Resources Viewer" from PlexData and some code I am able to retrieve the code object. I am however stumped as to how to retrieve the source from this code object. 

PythonWin 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32.
Portions Copyright 1994-2008 Mark Hammond - see 'Help/About PythonWin' for further copyright information.
>>> s = 'import time\nprint time.time()\n'
>>> c = compile(s, 'foo.py', 'exec')
>>> exec(c)
1398299623.77
>>> c
<code object <module> at 01E5C5C0, file "foo.py", line 1>
>>> for n in dir(c):
... 	if n.startswith('_'): continue
... 	print n
... 	a = getattr(c, n)
... 	print type(a)
... 	print `a`
... 	print
... 
co_argcount
<type 'int'>
0

co_cellvars
<type 'tuple'>
()

co_code
<type 'str'>
'd\x00\x00d\x01\x00k\x00\x00Z\x00\x00e\x00\x00i\x00\x00\x83\x00\x00GHd\x01\x00S'

co_consts
<type 'tuple'>
(-1, None)

co_filename
<type 'str'>
'foo.py'

co_firstlineno
<type 'int'>
1

co_flags
<type 'int'>
64

co_freevars
<type 'tuple'>
()

co_lnotab
<type 'str'>
'\x0c\x01'

co_name
<type 'str'>
'<module>'

co_names
<type 'tuple'>
('time',)

co_nlocals
<type 'int'>
0

co_stacksize
<type 'int'>
2

co_varnames
<type 'tuple'>
()
>>> len(s)
30
>>> len(c.co_code)
27
>>> 



More information about the Python-list mailing list