Skip to content

Commit a9e6a12

Browse files
committed
add 2nd random json generator
1 parent d0469eb commit a9e6a12

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

randjson2.py

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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

Comments
 (0)