# -*- coding: utf-8 -*- """ Store all usefull functions here """ import os import sys import time import re from os.path import join from string import maketrans def chmod(*args): try: os.chmod(*args) except: pass def decode(string): """ decode string with utf if possible """ try: return string.decode("utf8", "replace") except: return string def removeChars(string, repl): """ removes all chars in repl from string""" if type(string) == str: return string.translate(maketrans("", ""), repl) elif type(string) == unicode: return string.translate(dict([(ord(s), None) for s in repl])) def save_join(*args): """ joins a path, encoding aware """ paths = [] for i, path in enumerate(args): # remove : for win comp, but not for first segment if i: path = path.replace(":","") path = decode(path) tmp = path.encode(sys.getfilesystemencoding(), "replace") paths.append(tmp) return join(*paths) def compare_time(start, end): start = map(int, start) end = map(int, end) if start == end: return True now = list(time.localtime()[3:5]) if start < now and end > now: return True elif start > end and (now > start or now < end): return True elif start < now and end < now and start > end: return True else: return False def formatSize(size): """formats size of bytes""" size = int(size) steps = 0 sizes = ["B", "KiB", "MiB", "GiB", "TiB"] while size > 1000: size /= 1024.0 steps += 1 return "%.2f %s" % (size, sizes[steps]) def freeSpace(folder): if os.name == "nt": import ctypes free_bytes = ctypes.c_ulonglong(0) ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(folder), None, None, ctypes.pointer(free_bytes)) return free_bytes.value else: from os import statvfs s = statvfs(folder) return s.f_bsize * s.f_bavail def uniqify(seq, idfun=None): # order preserving if idfun is None: def idfun(x): return x seen = {} result = [] for item in seq: marker = idfun(item) # in old Python versions: # if seen.has_key(marker) # but in new ones: if marker in seen: continue seen[marker] = 1 result.append(item) return result def parseFileSize(string): #returns bytes string = string.strip().lower() p = re.compile(r"(\d+[\.,]\d+)(.*)") m = p.match(string) if m: traffic = float(m.group(1).replace(",", ".")) unit = m.group(2).strip() if unit in ("gb", "gig", "gbyte", "gigabyte", "gib"): traffic *= 1 << 30 elif unit in ("mb", "mbyte", "megabyte", "mib"): traffic *= 1 << 20 elif unit in ("kb", "kib", "kilobyte", "kbyte"): traffic *= 1 << 10 return traffic return 0 if __name__ == "__main__": print freeSpace(".") print removeChars("ab'cdgdsf''ds'", "'ghd")