#!/usr/bin/env python2 import sys import yaml import socket import threading need_decode = lambda s: list( filter( lambda c: ord(c) >= 128, s ) ) my_decode = lambda s: s.decode('utf-8') if need_decode(s) else s def func(port, f_out): ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ss.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) ss.bind(('', port)) ss.listen(5) (fd, adr) = ss.accept() s = fd.recv(1024) f_out.write(s) f_out.close() fd.close() ss.close() if __name__ == "__main__": if len(sys.argv) < 3: sys.stderr.write('Usage: {} input.yaml output.yaml\n'.format(sys.argv[0])) sys.exit(1) f = open(sys.argv[1], 'r') d = yaml.load(f) f.close() d = dict( map( lambda kv: ( kv[0], kv[1].encode('utf-8') ), d.items() ) ) foo = d.get('foo') bar = d.get('bar') d['hoge'] = foo + ' ' + bar d['fuga'] = 'foo={} bar={}'.format(foo, bar) d['guha'] = '(^_^)'.join( d.values() ) d = dict( map( lambda kv: ( kv[0], my_decode(kv[1]) ), d.items() ) ) s = yaml.dump(d, default_flow_style=False, allow_unicode=True) port = 11233 f_out = open(sys.argv[2], 'w') th = threading.Thread( target=func, args=(port, f_out) ) th.daemon = True th.start() fd = socket.socket(socket.AF_INET, socket.SOCK_STREAM) fd.connect(('localhost', port)) fd.sendall(s) th.join() # EOF