# Snippets python
       
       ### Obtenir un item aléatoire d'une liste
       
       ```
       import random
       random.choice['a','b','c']
       ```
       
       ### Hash md5 d'un fichier
       
       ```
       def get_hash(name):
           readsize = 64 * 1024
           with open(name, 'rb') as f:
               data = f.read(readsize)
               f.seek(-readsize, os.SEEK_END)
               data += f.read(readsize)
           return hashlib.md5(data).hexdigest()
       ```
       
       ### Texte aléatoire
       
       ```
       def randomtext(n):
           # stackoverflow.com/questions/2257441
           #   /random-string-generation-with-upper-case-letters-and-digits-in-python/23728630#23728630
           txt = ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(n))
           return txt
       ```
       
       ### which
       
       ```
       def which(program):
           #https://stackoverflow.com/questions/377017/test-if-executable-exists-in-python/377028#377028
           def is_exe(fpath):
               return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
           fpath, fname = os.path.split(program)
           if fpath:
               if is_exe(program):
                   return program
           else:
               for path in os.environ["PATH"].split(os.pathsep):
                   path = path.strip('"')
                   exe_file = os.path.join(path, program)
                   if is_exe(exe_file):
                       return exe_file
           return None
       ```
       
       ### Capturer CTRL-C
       
       ```
       x = 1
       while True:
           try:
               print x
               time.sleep(.3)
               x += 1
           except KeyboardInterrupt:
               print "Bye"
               sys.exit(0)
       ```
       
       ### Vérifier que l'on est connecté à internet
       
       ```
       def check_connectivity():
           """
           check if internet access
           #https://stackoverflow.com/questions/3764291/checking-network-connection
           """
           try:
               request.urlopen("http://www.openbsd.org", timeout=10)
               return True
           except Exception as e:
               print(e)
               return False
       ```
       
       ### Equivalent à tail -f
       
       ```
       def tail(filename):
           if not os.path.isfile(filename) :
               return
           # Watch the file for changes
           stat = os.stat(filename)
           size = stat.st_size
           mtime = stat.st_mtime
           while True:
               time.sleep(0.5)
               stat = os.stat(filename)
               if mtime < stat.st_mtime:
                   mtime = stat.st_mtime
                   with open(filename, "rb") as f:
                       f.seek(size)
                       lines = f.readlines()
                       ul = [ u.decode() for u in lines ]
                       yield("".join(ul).strip())
                   size = stat.st_size
       ```
       
       ---
 (DIR) /