2014-06-02 | python
A small python library which seems to work rather well when it comes to shelling out is sh. It provides a handy and lightweight abstraction above the means already available within python.
The features I found most useful:
Take the small script on this page for example. At the top of the script
sh.py is being imported with import sh. Then further down, the following
lines test for command availability and make the commands available as python
objects.
git = sh.git
ls = sh.ls
docker = sh.docker
test = sh.test
In case the command in question does not exist, the library will throw an exception. This enables us to check the environment and bail out with a minimal amount of code.
Further down I can simply use this line
digest = git('ls-remote', repo, 'refs/heads/master').split()[0]
to read out remote git repository information and work on the command's output right away with a small amount of code. Of course I could use the subprocess module too to achieve similar functionality but using sh tends to result in cleaner implementations and adds more flexibility.
It surely is worth a shot.