shcol is a shell columnizer that works in a similar way as the Unix-tool ls does when rendering directory contents.
Some examples:
>>> import shcol
>>> shcol.print_filenames() # print contents of current directory
bin LICENSE MANIFEST.in setup.py testsuite
build Makefile README.md shcol
>>> shcol.print_filenames('testsuite') # print contents of a subdirectory
test_cli.py test_core.py test_highlevel.py test_script.py
test_cli.pyc test_core.pyc test_highlevel.pyc test_script.pyc
>>> shcol.print_filenames('testsuite/*.py') # only print `*.py`-files
testsuite/test_cli.py testsuite/test_highlevel.py
testsuite/test_core.py testsuite/test_script.py
>>> shcol.print_filenames('~/shcol', hide_dotted=False) # like `ls -A ~/shcol`
bin .git Makefile README.md shcol
build LICENSE MANIFEST.in setup.py testsuite
shcol can also columnize the attribute names of a Python-object:
>>> shcol.print_sorted(shcol) __author__ config helpers __package__ print_columnized_mapping __builtins__ core highlevel __path__ print_filenames cli __doc__ __license__ print_attrs __version__ columnize __file__ __name__ print_columnized >>> shcol.print_sorted(shcol, spacing=5) __author__ core __license__ print_columnized __builtins__ __doc__ __name__ print_columnized_mapping cli __file__ __package__ print_filenames columnize helpers __path__ __version__ config highlevel print_attrs
Note that the spacing-parameter as shown above works with all kinds of print_*-functions in shcol.
You can also tell a print_*-function to use a specific line width for its output:
>>> shcol.print_sorted(shcol, spacing=5, line_width=60) __author__ __file__ print_attrs __builtins__ helpers print_columnized cli highlevel print_columnized_mapping columnize __license__ print_filenames config __name__ __version__ core __package__ __doc__ __path__
Note that by default the terminal’s width is used as the line width.
And of course, you can columnize arbitrary names with shcol:
>>> shcol.print_columnized(['foo', 'bar', 'baz'], spacing=7) foo bar baz >>> shcol.print_columnized(['foo', 'bar', 'baz'], spacing=7, sort_items=True) bar baz foo
The following example demonstrates that sorting is locale-aware. Note the German umlaut in it. Hint: You need German as your default locale setting to reproduce that in your Python interpreter:
>>> shcol.print_columnized(['foo', 'bär', 'baz'], sort_items=True) bär baz foo
You can see that shcol handles Unicode-characters as you would expect it.
In case you need the raw columnized string you can get that directly:
>>> shcol.columnize(['foo', 'bär', 'baz'], sort_items=True) # on Python 2.7 u'b\xe4r baz foo' >>> shcol.columnize(['foo', 'bär', 'baz'], sort_items=True) # on Python 3.x 'bär baz foo'
shcol has its focus on usability and speed. Even large lists will be rendered relatively fast (like shcol.print_filenames('/usr/bin')).
Just give it a try if you like it and feel free to give some feedback. :-)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file shcol-0.3.zip.
File metadata
- Download URL: shcol-0.3.zip
- Upload date:
- Size: 32.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd718921db93b9fe913144cdbf54c6c0ad1986be11542d446ff4a15021c59689
|
|
| MD5 |
909e94e4b0aba10aa33bea14c9cd6ab3
|
|
| BLAKE2b-256 |
e7675fda7c5c5b7cce574f99fe1fb8e71f3fee41faaa74ad06322159c288a221
|