Skip to main content

Human friendly output for text interfaces using Python

Project description

https://travis-ci.org/xolox/python-humanfriendly.svg?branch=master https://coveralls.io/repos/xolox/python-humanfriendly/badge.png?branch=master

The functions and classes in the humanfriendly package can be used to make text interfaces more user friendly. Some example features:

  • Parsing and formatting numbers, file sizes, pathnames and timespans in simple, human friendly formats.

  • Easy to use timers for long running operations, with human friendly formatting of the resulting timespans.

  • Prompting the user to select a choice from a list of options by typing the option’s number or a unique substring of the option.

  • Terminal interaction including text styling (ANSI escape sequences), user friendly rendering of usage messages and querying the terminal for its size.

The humanfriendly package is currently tested on Python 2.6, 2.7, 3.4, 3.5 and PyPy.

Getting started

It’s very simple to start using the humanfriendly package:

>>> import humanfriendly
>>> user_input = raw_input("Enter a readable file size: ")
Enter a readable file size: 16G
>>> num_bytes = humanfriendly.parse_size(user_input)
>>> print num_bytes
16000000000
>>> print "You entered:", humanfriendly.format_size(num_bytes)
You entered: 16 GB
>>> print "You entered:", humanfriendly.format_size(num_bytes, binary=True)
You entered: 14.9 GiB

Command line

Usage: humanfriendly [OPTIONS]

Human friendly input/output (text formatting) on the command line based on the Python package with the same name.

Supported options:

Option

Description

-c, --run-command

Execute an external command (given as the positional arguments) and render a spinner and timer while the command is running. The exit status of the command is propagated.

--format-table

Read tabular data from standard input (each line is a row and each whitespace separated field is a column), format the data as a table and print the resulting table to standard output. See also the --delimiter option.

-d, --delimiter=VALUE

Change the delimiter used by --format-table to VALUE (a string). By default all whitespace is treated as a delimiter.

-n, --format-number=VALUE

Format a number (given as the integer or floating point number VALUE) with thousands separators and two decimal places (if needed) and print the formatted number to standard output.

-s, --format-size=BYTES

Convert a byte count (given as the integer BYTES) into a human readable string and print that string to standard output.

-t, --format-timespan=SECONDS

Convert a number of seconds (given as the floating point number SECONDS) into a human readable timespan and print that string to standard output.

--parse-size=VALUE

Parse a human readable data size (given as the string VALUE) and print the number of bytes to standard output.

-h, --help

Show this message and exit.

A note about size units

When I originally published the humanfriendly package I went with binary multiples of bytes (powers of two). It was pointed out several times that this was a poor choice (see issue #4 and pull requests #8 and #9) and thus the new default became decimal multiples of bytes (powers of ten):

Unit

Binary value

Decimal value

KB

1024

1000

MB

1048576

1000000

GB

1073741824

1000000000

TB

1099511627776

1000000000000

etc

The option to use binary multiples of bytes remains by passing the keyword argument binary=True to the format_size() and parse_size() functions.

Contact

The latest version of humanfriendly is available on PyPI and GitHub. The documentation is hosted on Read the Docs. For bug reports please create an issue on GitHub. If you have questions, suggestions, etc. feel free to send me an e-mail at peter@peterodding.com.

License

This software is licensed under the MIT license.

© 2016 Peter Odding.

Release history Release notifications | RSS feed

This version

2.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

humanfriendly-2.1.tar.gz (49.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

humanfriendly-2.1-py2.py3-none-any.whl (54.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file humanfriendly-2.1.tar.gz.

File metadata

  • Download URL: humanfriendly-2.1.tar.gz
  • Upload date:
  • Size: 49.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for humanfriendly-2.1.tar.gz
Algorithm Hash digest
SHA256 ecbbb27444b3151a1d2e4366af938151597bdfe1a9d645595804df34e3e8c6ac
MD5 d5b4cf4865a931ce98f6ea7e428b8e98
BLAKE2b-256 c902499c894f16febdcd99447ad46ae0de2f91b84dc526e864b910d37fc252b8

See more details on using hashes here.

File details

Details for the file humanfriendly-2.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for humanfriendly-2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 97c486e94841dfc78dcac98566c6d3217e0793f05d48c91a4aa70bda2ccb662d
MD5 b6431f59ca25372937b5ef02b22ede88
BLAKE2b-256 9cb9d3d02dae464db8bd1e1f2d918c10399684ec97bf559039540144a9d68184

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page