jsondiff 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/Users/jiaqiang/PycharmProjects/tx_flow_analysis/venv/bin/python3
  2. # -*- coding: utf-8 -*-
  3. from __future__ import print_function
  4. import sys
  5. import json
  6. import jsonpatch
  7. import argparse
  8. parser = argparse.ArgumentParser(description='Diff two JSON files')
  9. parser.add_argument('FILE1', type=argparse.FileType('r'))
  10. parser.add_argument('FILE2', type=argparse.FileType('r'))
  11. parser.add_argument('--indent', type=int, default=None,
  12. help='Indent output by n spaces')
  13. parser.add_argument('-u', '--preserve-unicode', action='store_true',
  14. help='Output Unicode character as-is without using Code Point')
  15. parser.add_argument('-v', '--version', action='version',
  16. version='%(prog)s ' + jsonpatch.__version__)
  17. def main():
  18. try:
  19. diff_files()
  20. except KeyboardInterrupt:
  21. sys.exit(1)
  22. def diff_files():
  23. """ Diffs two JSON files and prints a patch """
  24. args = parser.parse_args()
  25. doc1 = json.load(args.FILE1)
  26. doc2 = json.load(args.FILE2)
  27. patch = jsonpatch.make_patch(doc1, doc2)
  28. if patch.patch:
  29. print(json.dumps(patch.patch, indent=args.indent, ensure_ascii=not(args.preserve_unicode)))
  30. sys.exit(1)
  31. if __name__ == "__main__":
  32. main()