mirror of
https://github.com/Kilian/Trimage.git
synced 2026-01-26 01:58:41 -05:00
add hurry.filesize, add gitignore to ignore pyc files
This commit is contained in:
parent
9d126924e7
commit
187f3e616e
6 changed files with 177 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
*.pyc
|
||||||
|
|
||||||
7
hurry/__init__.py
Normal file
7
hurry/__init__.py
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# this is a namespace package
|
||||||
|
try:
|
||||||
|
import pkg_resources
|
||||||
|
pkg_resources.declare_namespace(__name__)
|
||||||
|
except ImportError:
|
||||||
|
import pkgutil
|
||||||
|
__path__ = pkgutil.extend_path(__path__, __name__)
|
||||||
47
hurry/filesize/README.txt
Normal file
47
hurry/filesize/README.txt
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
hurry.filesize
|
||||||
|
==============
|
||||||
|
|
||||||
|
hurry.filesize a simple Python library that can take a number of bytes and
|
||||||
|
returns a human-readable string with the size in it, in kilobytes (K),
|
||||||
|
megabytes (M), etc.
|
||||||
|
|
||||||
|
The default system it uses is "traditional", where multipliers of 1024
|
||||||
|
increase the unit size::
|
||||||
|
|
||||||
|
>>> from hurry.filesize import size
|
||||||
|
>>> size(1024)
|
||||||
|
'1K'
|
||||||
|
|
||||||
|
An alternative, slightly more verbose system::
|
||||||
|
|
||||||
|
>>> from hurry.filesize import alternative
|
||||||
|
>>> size(1, system=alternative)
|
||||||
|
'1 byte'
|
||||||
|
>>> size(10, system=alternative)
|
||||||
|
'10 bytes'
|
||||||
|
>>> size(1024, system=alternative)
|
||||||
|
'1 KB'
|
||||||
|
|
||||||
|
A verbose system::
|
||||||
|
|
||||||
|
>>> from hurry.filesize import verbose
|
||||||
|
>>> size(10, system=verbose)
|
||||||
|
'10 bytes'
|
||||||
|
>>> size(1024, system=verbose)
|
||||||
|
'1 kilobyte'
|
||||||
|
>>> size(2000, system=verbose)
|
||||||
|
'1 kilobyte'
|
||||||
|
>>> size(3000, system=verbose)
|
||||||
|
'2 kilobytes'
|
||||||
|
>>> size(1024 * 1024, system=verbose)
|
||||||
|
'1 megabyte'
|
||||||
|
>>> size(1024 * 1024 * 3, system=verbose)
|
||||||
|
'3 megabytes'
|
||||||
|
|
||||||
|
You can also use the SI system, where multipliers of 1000 increase the unit
|
||||||
|
size::
|
||||||
|
|
||||||
|
>>> from hurry.filesize import si
|
||||||
|
>>> size(1000, system=si)
|
||||||
|
'1K'
|
||||||
|
|
||||||
4
hurry/filesize/__init__.py
Normal file
4
hurry/filesize/__init__.py
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
from hurry.filesize.filesize import size
|
||||||
|
from hurry.filesize.filesize import traditional, alternative, verbose, iec, si
|
||||||
|
|
||||||
|
|
||||||
110
hurry/filesize/filesize.py
Normal file
110
hurry/filesize/filesize.py
Normal file
|
|
@ -0,0 +1,110 @@
|
||||||
|
|
||||||
|
traditional = [
|
||||||
|
(1024 ** 5, 'P'),
|
||||||
|
(1024 ** 4, 'T'),
|
||||||
|
(1024 ** 3, 'G'),
|
||||||
|
(1024 ** 2, 'M'),
|
||||||
|
(1024 ** 1, 'K'),
|
||||||
|
(1024 ** 0, 'B'),
|
||||||
|
]
|
||||||
|
|
||||||
|
alternative = [
|
||||||
|
(1024 ** 5, ' PB'),
|
||||||
|
(1024 ** 4, ' TB'),
|
||||||
|
(1024 ** 3, ' GB'),
|
||||||
|
(1024 ** 2, ' MB'),
|
||||||
|
(1024 ** 1, ' KB'),
|
||||||
|
(1024 ** 0, (' byte', ' bytes')),
|
||||||
|
]
|
||||||
|
|
||||||
|
verbose = [
|
||||||
|
(1024 ** 5, (' petabyte', ' petabytes')),
|
||||||
|
(1024 ** 4, (' terabyte', ' terabytes')),
|
||||||
|
(1024 ** 3, (' gigabyte', ' gigabytes')),
|
||||||
|
(1024 ** 2, (' megabyte', ' megabytes')),
|
||||||
|
(1024 ** 1, (' kilobyte', ' kilobytes')),
|
||||||
|
(1024 ** 0, (' byte', ' bytes')),
|
||||||
|
]
|
||||||
|
|
||||||
|
iec = [
|
||||||
|
(1024 ** 5, 'Pi'),
|
||||||
|
(1024 ** 4, 'Ti'),
|
||||||
|
(1024 ** 3, 'Gi'),
|
||||||
|
(1024 ** 2, 'Mi'),
|
||||||
|
(1024 ** 1, 'Ki'),
|
||||||
|
(1024 ** 0, ''),
|
||||||
|
]
|
||||||
|
|
||||||
|
si = [
|
||||||
|
(1000 ** 5, 'P'),
|
||||||
|
(1000 ** 4, 'T'),
|
||||||
|
(1000 ** 3, 'G'),
|
||||||
|
(1000 ** 2, 'M'),
|
||||||
|
(1000 ** 1, 'K'),
|
||||||
|
(1000 ** 0, 'B'),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def size(bytes, system=traditional):
|
||||||
|
"""Human-readable file size.
|
||||||
|
|
||||||
|
Using the traditional system, where a factor of 1024 is used::
|
||||||
|
|
||||||
|
>>> size(10)
|
||||||
|
'10B'
|
||||||
|
>>> size(100)
|
||||||
|
'100B'
|
||||||
|
>>> size(1000)
|
||||||
|
'1000B'
|
||||||
|
>>> size(2000)
|
||||||
|
'1K'
|
||||||
|
>>> size(10000)
|
||||||
|
'9K'
|
||||||
|
>>> size(20000)
|
||||||
|
'19K'
|
||||||
|
>>> size(100000)
|
||||||
|
'97K'
|
||||||
|
>>> size(200000)
|
||||||
|
'195K'
|
||||||
|
>>> size(1000000)
|
||||||
|
'976K'
|
||||||
|
>>> size(2000000)
|
||||||
|
'1M'
|
||||||
|
|
||||||
|
Using the SI system, with a factor 1000::
|
||||||
|
|
||||||
|
>>> size(10, system=si)
|
||||||
|
'10B'
|
||||||
|
>>> size(100, system=si)
|
||||||
|
'100B'
|
||||||
|
>>> size(1000, system=si)
|
||||||
|
'1K'
|
||||||
|
>>> size(2000, system=si)
|
||||||
|
'2K'
|
||||||
|
>>> size(10000, system=si)
|
||||||
|
'10K'
|
||||||
|
>>> size(20000, system=si)
|
||||||
|
'20K'
|
||||||
|
>>> size(100000, system=si)
|
||||||
|
'100K'
|
||||||
|
>>> size(200000, system=si)
|
||||||
|
'200K'
|
||||||
|
>>> size(1000000, system=si)
|
||||||
|
'1M'
|
||||||
|
>>> size(2000000, system=si)
|
||||||
|
'2M'
|
||||||
|
|
||||||
|
"""
|
||||||
|
for factor, suffix in system:
|
||||||
|
if bytes >= factor:
|
||||||
|
break
|
||||||
|
amount = int(bytes/factor)
|
||||||
|
if isinstance(suffix, tuple):
|
||||||
|
singular, multiple = suffix
|
||||||
|
if amount == 1:
|
||||||
|
suffix = singular
|
||||||
|
else:
|
||||||
|
suffix = multiple
|
||||||
|
return str(amount) + suffix
|
||||||
|
|
||||||
7
hurry/filesize/tests.py
Normal file
7
hurry/filesize/tests.py
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
import unittest, doctest
|
||||||
|
|
||||||
|
def test_suite():
|
||||||
|
return unittest.TestSuite((
|
||||||
|
doctest.DocFileSuite('README.txt'),
|
||||||
|
doctest.DocTestSuite('hurry.filesize.filesize'),
|
||||||
|
))
|
||||||
Loading…
Add table
Add a link
Reference in a new issue