Guest User

Untitled

a guest
Mar 25th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import sys, os
  4.  
  5. class WC :
  6. """"word count class"""
  7. def getWords(self, data):
  8. noise = ['\n', '\t', ',', '.', ';', ':', '-', '!', '?', '*', '(', ')', '{', '}', '[', ']', '|']
  9. for char in noise :
  10. data = data.replace(char, ' ')
  11. return data.split()
  12.  
  13. def words(self, data) :
  14. return len(self.getWords(data))
  15.  
  16. def strings(self, data) :
  17. return len(data.split('\n')) - 1
  18.  
  19. def wordsDuplicates(self, data) :
  20. unique = {}
  21. for word in self.getWords(data) :
  22. if word in unique :
  23. unique[word] += 1
  24. else :
  25. unique[word] = 1
  26. return unique
  27.  
  28. def bytes(self, data) :
  29. return sys.getsizeof(data)
  30.  
  31. keysAvailable = {
  32. "-l": 'strings',
  33. "-w": "words",
  34. "-W": "wordsDuplicates",
  35. "-b": "bytes"
  36. }
  37.  
  38. arguments = sys.argv
  39. arguments.pop(0)
  40.  
  41. keys = list(filter((lambda x: x.startswith("-")), sys.argv))
  42. args = list(filter((lambda x: not x.startswith("-")), sys.argv))
  43.  
  44. if (len(args) != 1 ) :
  45. sys.exit("invalid arguments count");
  46.  
  47. filename = args[0]
  48.  
  49. if (os.path.exists(filename)) :
  50. try :
  51. with open(filename, 'r') as fo :
  52. data = fo.read()
  53. except IOError :
  54. sys.exit("Could not read file " + filename)
  55. finally :
  56. fo.close()
  57. else :
  58. sys.exit("No such file " + filename)
  59.  
  60. wc = WC()
  61.  
  62. for key in keys :
  63. if key in keysAvailable :
  64. method = getattr(wc, keysAvailable.get(key))
  65. result = method(data)
  66. print(keysAvailable.get(key) + ': ' + str(result))
Add Comment
Please, Sign In to add comment