Added string_to_bytes()
* Renamed from convert_to_bytes() for clarity * Now supports KB vs KiB
This commit is contained in:
parent
7a0a618b3f
commit
f985c03490
1 changed files with 39 additions and 0 deletions
|
|
@ -27,6 +27,9 @@ COLORS = {
|
||||||
'CYAN': '\033[36m',
|
'CYAN': '\033[36m',
|
||||||
}
|
}
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
REGEX_SIZE_STRING = re.compile(
|
||||||
|
r'(?P<size>\d+\.?\d*)\s+(?P<units>[PTGMKB])(?P<binary>I?)B?'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Functions
|
# Functions
|
||||||
|
|
@ -187,6 +190,42 @@ def sleep(seconds=2):
|
||||||
time.sleep(seconds)
|
time.sleep(seconds)
|
||||||
|
|
||||||
|
|
||||||
|
def string_to_bytes(size, assume_binary=False):
|
||||||
|
"""Convert human-readable size str to bytes and return an int."""
|
||||||
|
LOG.debug('size: %s, assume_binary: %s', size, assume_binary)
|
||||||
|
scale = 1000
|
||||||
|
size = str(size)
|
||||||
|
tmp = REGEX_SIZE_STRING.search(size.upper())
|
||||||
|
|
||||||
|
# Set scale
|
||||||
|
if tmp.group('binary') or assume_binary:
|
||||||
|
scale = 1024
|
||||||
|
|
||||||
|
# Convert to bytes
|
||||||
|
if tmp:
|
||||||
|
size = float(tmp.group('size'))
|
||||||
|
units = tmp.group('units')
|
||||||
|
if units == 'P':
|
||||||
|
size *= scale ** 5
|
||||||
|
if units == 'T':
|
||||||
|
size *= scale ** 4
|
||||||
|
elif units == 'G':
|
||||||
|
size *= scale ** 3
|
||||||
|
elif units == 'M':
|
||||||
|
size *= scale ** 2
|
||||||
|
elif units == 'K':
|
||||||
|
size *= scale ** 1
|
||||||
|
elif units == 'B':
|
||||||
|
size *= scale ** 0
|
||||||
|
size = int(size)
|
||||||
|
else:
|
||||||
|
return -1
|
||||||
|
|
||||||
|
# Done
|
||||||
|
LOG.debug('bytes: %s', size)
|
||||||
|
return size
|
||||||
|
|
||||||
|
|
||||||
def strip_colors(string):
|
def strip_colors(string):
|
||||||
"""Strip known ANSI color escapes from string, returns str."""
|
"""Strip known ANSI color escapes from string, returns str."""
|
||||||
LOG.debug('string: %s', string)
|
LOG.debug('string: %s', string)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue