-
Notifications
You must be signed in to change notification settings - Fork 129
Expand file tree
/
Copy pathpythonpy
More file actions
executable file
·87 lines (80 loc) · 2.67 KB
/
pythonpy
File metadata and controls
executable file
·87 lines (80 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python
import argparse
import glob
import itertools
import json
import math
import os
import random
import re
import shutil
import sys
parser = argparse.ArgumentParser()
parser.add_argument('evaluation', nargs='?', default='None')
parser.add_argument('-c', '--cmd')
parser.add_argument('--ji' '--json_in',
dest='json_input', action='store_const',
const=True, default=False)
parser.add_argument('--jo' '--json_out',
dest='json_output', action='store_const',
const=True, default=False)
parser.add_argument('-x' '--line_by_line',
dest='line_by_line', action='store_const',
const=True, default=False,
help='sum the integers (default: find the max)')
parser.add_argument('-sv' '--split_values',
dest='split_values',
default=False,
help='sum the integers (default: find the max)')
parser.add_argument('-l', '--list_of_stdin',
dest='list_of_stdin', action='store_const',
const=True, default=False)
parser.add_argument('-fx', '--filter',
dest='filter_result', action='store_const',
const=True, default=False)
parser.add_argument('--i', '--ignore_exceptions',
dest='ignore_exceptions', action='store_const',
const=True, default=False)
args = parser.parse_args()
if args.json_input:
stdin = (json.loads(x.rstrip()) for x in sys.stdin)
else:
stdin = (x.rstrip() for x in sys.stdin)
if args.evaluation:
args.evaluation = args.evaluation.replace("`", "'")
if args.cmd:
args.cmd = args.cmd.replace("`", "'")
if args.cmd:
exec(args.cmd)
if args.line_by_line:
if args.ignore_exceptions:
def safe_eval(text, x):
try:
return eval(text)
except:
return None
result = (safe_eval(args.evaluation, x) for x in stdin)
else:
result = (eval(args.evaluation) for x in stdin)
elif args.list_of_stdin:
l = list(stdin)
result = eval(args.evaluation)
elif args.filter_result:
result = (x for x in stdin if eval(args.evaluation))
elif args.split_values:
result = (eval(args.evaluation) for sv in
(re.split(args.split_values, x) for x in stdin))
else:
result = eval(args.evaluation)
if hasattr(result, '__iter__'):
for x in result:
if x is not None:
if args.json_output:
print json.dumps(x)
else:
print x
elif result is not None:
if args.json_output:
print json.dumps(result)
else:
print result