mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
bpo-31553: add --json-lines option to json.tool (#10051)
* add jsonlines option to json.tool * code review * fix:avoid read infile after it close * improve doc in whatsnew 3.8
This commit is contained in:
parent
0e7497cb46
commit
f194479949
5 changed files with 53 additions and 5 deletions
|
|
@ -26,19 +26,25 @@ def main():
|
|||
help='write the output of infile to outfile')
|
||||
parser.add_argument('--sort-keys', action='store_true', default=False,
|
||||
help='sort the output of dictionaries alphabetically by key')
|
||||
parser.add_argument('--json-lines', action='store_true', default=False,
|
||||
help='parse input using the jsonlines format')
|
||||
options = parser.parse_args()
|
||||
|
||||
infile = options.infile or sys.stdin
|
||||
outfile = options.outfile or sys.stdout
|
||||
sort_keys = options.sort_keys
|
||||
with infile:
|
||||
json_lines = options.json_lines
|
||||
with infile, outfile:
|
||||
try:
|
||||
obj = json.load(infile)
|
||||
if json_lines:
|
||||
objs = (json.loads(line) for line in infile)
|
||||
else:
|
||||
objs = (json.load(infile), )
|
||||
for obj in objs:
|
||||
json.dump(obj, outfile, sort_keys=sort_keys, indent=4)
|
||||
outfile.write('\n')
|
||||
except ValueError as e:
|
||||
raise SystemExit(e)
|
||||
with outfile:
|
||||
json.dump(obj, outfile, sort_keys=sort_keys, indent=4)
|
||||
outfile.write('\n')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue