mkv

bytrend.py

mkv
Nov 3rd, 2013
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.02 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import array
  3. import sys
  4.  
  5. if __name__ != "__main__":
  6.     print("the fuck you do")
  7.     exit(1)
  8.  
  9. def bytestrm(filename, chunksize=8192):
  10.     with open(filename, "rb") as f:
  11.         while True:
  12.             buf = f.read(chunksize)
  13.             if buf:
  14.                 for b in buf:
  15.                     yield b
  16.             else:
  17.                 break
  18.  
  19. if len(sys.argv) < 2:
  20.     print("usage: {} filename".format(sys.argv[0]))
  21.     exit(1)
  22.  
  23. vmax = sys.maxsize-2
  24. trend = array.array('L')
  25. for i in range(0,256):
  26.     trend.append(0)
  27.  
  28. last = 400;
  29. for b in bytestrm(str(sys.argv[1])):
  30.     if last == b:
  31.         trend[b] = trend[b] + 1
  32.         if trend[b] >= vmax:
  33.             print("overflow in {}".format(b))
  34.     last = b
  35.  
  36. for i in range(0,256):
  37.     print("{} {}".format(i, trend[i]))
  38.  
  39.  
  40.  
  41.  
  42.  
  43. #0-010134-ed-ks3318945 <~> time mono bytecunt.exe "$file" > a; time ./bytrend.py "$file" > b; diff a b
  44. #
  45. #real   0m0.115s
  46. #user   0m0.052s
  47. #sys    0m0.024s
  48. #
  49. #real   0m5.733s
  50. #user   0m5.708s
  51. #sys    0m0.004s
Advertisement
Add Comment
Please, Sign In to add comment