__main__.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/usr/bin/env python
  2. # -*-coding:utf-8-*-
  3. """Fool command line interface."""
  4. import sys
  5. import fool
  6. from argparse import ArgumentParser
  7. parser = ArgumentParser(usage="%s -m fool [options] filename" % sys.executable,
  8. description="Fool command line interface.",
  9. epilog="If no filename specified, use STDIN instead.")
  10. parser.add_argument("-d", "--delimiter", metavar="DELIM", default=' / ',
  11. nargs='?', const=' ',
  12. help="use DELIM instead of ' / ' for word delimiter; or a space if it is used without DELIM")
  13. parser.add_argument("-p", "--pos", metavar="DELIM", nargs='?', const='_',
  14. help="enable POS tagging; if DELIM is specified, use DELIM instead of '_' for POS delimiter")
  15. parser.add_argument("-u", "--user_dict",
  16. help="use USER_DICT together with the default dictionary or DICT (if specified)")
  17. parser.add_argument("-b", "--batch_size", default=1, type = int ,help="batch size ")
  18. parser.add_argument("filename", nargs='?', help="input file")
  19. args = parser.parse_args()
  20. delim = args.delimiter
  21. plim = args.pos
  22. batch_zize = args.batch_size
  23. if args.user_dict:
  24. fool.load_userdict(args.user_dict)
  25. fp = open(args.filename, 'r') if args.filename else sys.stdin
  26. lines = fp.readlines(batch_zize)
  27. while lines:
  28. lines = [ln.strip("\r\n") for ln in lines]
  29. if args.pos:
  30. result_list = fool.pos_cut(lines)
  31. for res in result_list:
  32. out_str = [plim.join(p) for p in res]
  33. print(delim.join(out_str))
  34. else:
  35. result_list = fool.cut(lines)
  36. for res in result_list:
  37. print(delim.join(res))
  38. lines = fp.readlines(batch_zize)
  39. fp.close()