Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #70562

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

Newsgroups comp.lang.python
Date 2014-04-23 17:58 -0700
Message-ID <4dfca89b-82c6-42f4-aedb-2fe82a7f7dc1@googlegroups.com> (permalink)
Subject retrieve source code from code object as returned by compile()
From Justin Ezequiel <justin.ezequiel@gmail.com>

Show all headers | View raw


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
>>> 

Back to comp.lang.python | Previous | NextNext in thread | Find similar | Unroll thread


Thread

retrieve source code from code object as returned by compile() Justin Ezequiel <justin.ezequiel@gmail.com> - 2014-04-23 17:58 -0700
  Re: retrieve source code from code object as returned by compile() Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2014-04-24 17:53 +1200
    Re: retrieve source code from code object as returned by compile() Justin Ezequiel <justin.ezequiel@gmail.com> - 2014-04-24 19:50 -0700
      Re: retrieve source code from code object as returned by compile() Amirouche Boubekki <amirouche.boubekki@gmail.com> - 2014-04-25 18:34 +0200
        Re: retrieve source code from code object as returned by compile() Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2014-04-26 12:03 +1200

csiph-web