|
| 1 | +import json |
| 2 | +import os |
| 3 | +from random import * |
| 4 | +import string |
| 5 | +import sys |
| 6 | + |
| 7 | +constants = [True, False, None] |
| 8 | + |
| 9 | +def mkconstant(): |
| 10 | + return choice(constants) |
| 11 | + |
| 12 | +def mkinteger(): |
| 13 | + return randint(-1e3, 1e3) * (10 ** normalvariate(0, 4)) + randint(-1e3, 1e3) |
| 14 | + |
| 15 | +def mkdouble(): |
| 16 | + return random() * (10 ** normalvariate(0, 30)) |
| 17 | + |
| 18 | +def mknum(): |
| 19 | + if randint(0, 1): |
| 20 | + return mkdouble() |
| 21 | + else: |
| 22 | + return mkinteger() |
| 23 | + |
| 24 | +def mkstring(): |
| 25 | + n = int(min(abs(normalvariate(40, 20)), abs(normalvariate(30, 10)))) |
| 26 | + return ''.join([choice(string.ascii_letters) for i in range(0, n)]) |
| 27 | + |
| 28 | +values = [mkconstant, mknum, mknum, mknum, mkstring] |
| 29 | + |
| 30 | +def mkvalue(): |
| 31 | + return choice(values)() |
| 32 | + |
| 33 | +if __name__ == "__main__": |
| 34 | + args = sys.argv[1:] |
| 35 | + try: |
| 36 | + num = int(args[0]) |
| 37 | + path = args[1] |
| 38 | + print "writing json (%d rows) into %s" % (num, path) |
| 39 | + f = open(path, 'w') |
| 40 | + f.write("[") |
| 41 | + for i in range(0, num): |
| 42 | + if i > 0: f.write(", ") |
| 43 | + c = {"foo": mkstring(), |
| 44 | + "bar": mknum(), |
| 45 | + "qux": mkvalue(), |
| 46 | + "duh": {"a": mknum(), "b": mknum(), "c": mknum()}, |
| 47 | + "xyz": {"yy": mkstring(), "zz": mkvalue()}, |
| 48 | + "abc": [mkvalue() for i in range(0, 4)]} |
| 49 | + f.write(json.dumps(c)) |
| 50 | + f.write("]") |
| 51 | + f.close() |
| 52 | + except Exception, e: |
| 53 | + print "usage: %s NUM PATH" % sys.argv[0] |
0 commit comments