Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import collections
- import os
- import pdb
- import pprint
- import sys
- def buncode(f):
- while True:
- c = f.read(1).decode()
- if not c:
- return
- if c == 'd':
- a = iter(buncode(f))
- yield collections.OrderedDict(zip(map(bytes.decode, a), a))
- elif c == 'i':
- i = ''
- while True:
- c = f.read(1).decode()
- if not c:
- return
- if c == 'e':
- yield int(i)
- break
- else:
- i += c
- elif c == 'l':
- yield list(buncode(f))
- elif c == 'e':
- return
- else:
- i = c
- while True:
- c = f.read(1).decode()
- assert c, i
- if c == ':':
- yield f.read(int(i))
- break
- else:
- i += c
- if len(sys.argv) == 2:
- f = open(sys.argv[1], 'rb')
- else:
- f = os.fdopen(sys.stdin.fileno(), 'rb')
- pprint.pprint(buncode(f).__next__())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement