source: python/trunk/Tools/compiler/dumppyc.py@ 395

Last change on this file since 395 was 2, checked in by Yuri Dario, 15 years ago

Initial import for vendor code.

  • Property svn:eol-style set to native
File size: 996 bytes
Line 
1#! /usr/bin/env python
2
3import marshal
4import dis
5import types
6
7def dump(obj):
8 print obj
9 for attr in dir(obj):
10 if attr.startswith('co_'):
11 val = getattr(obj, attr)
12 print "\t", attr, repr(val)
13
14def loadCode(path):
15 f = open(path)
16 f.read(8)
17 co = marshal.load(f)
18 f.close()
19 return co
20
21def walk(co, match=None):
22 if match is None or co.co_name == match:
23 dump(co)
24 print
25 dis.dis(co)
26 for obj in co.co_consts:
27 if type(obj) == types.CodeType:
28 walk(obj, match)
29
30def load(filename, codename=None):
31 co = loadCode(filename)
32 walk(co, codename)
33
34if __name__ == "__main__":
35 import sys
36 if len(sys.argv) == 3:
37 filename, codename = sys.argv[1:]
38 else:
39 filename = sys.argv[1]
40 codename = None
41 if filename.endswith('.py'):
42 buf = open(filename).read()
43 co = compile(buf, filename, "exec")
44 walk(co)
45 else:
46 load(filename, codename)
Note: See TracBrowser for help on using the repository browser.