Skip to main content

Bash for Python

Project description

A library that enables easy running and concatenation of bash commands in python

Installation

Install using pip:

pip install bash

Usage

Run commands as you would in bash:

>>> from bash import bash
>>> bash('ls . | grep ".pyc"')
bash.pyc
tests.pyc

Chain commands for the same effect:

>>> bash('ls . ').bash('grep ".pyc"')
bash.pyc
tests.pyc

This becomes increasingly useful if you later need to reuse one such command:

>>> b = bash('ls . ')
>>> b.bash('grep ".pyc"')
bash.pyc
tests.pyc
>>> b.bash('grep ".py$')
bash.py
tests.py

Access stdout and stderr attributes:

>>> b = bash('ls tests.py')
>>> b.stdout
'tests.py\n'
>>> b.stderr
''

Get the return code generated by a command:

>>> b = bash('ls tests.py')
>>> b
tests.py
>>> b.code
0

To get a stripped, unicode string version of bash.stdout call value():

>>> b = bash('ls tests.py').value()
u'tests.py'

Motivation

I found that I was often having to write the same lines of code to handle running bash commands from python.

This provides a pip-installable, tested shortcut to writing:

from subprocess import PIPE, Popen

p = Popen(cmd, shell=True, stdout=PIPE, stdin=PIPE, stderr=PIPE)
output, err = p.communicate()

Warning

Please note that this library uses shell=True under the hood. This means that this library is NOT suitable for running untrusted commands. (See explanation)

Running the tests

Simply use a test runner.

$ nosetests

Support + Contributing

Feel free to make pull requests, or report issues via the repo:

https://github.com/alexcouper/bash

Project details


Download files

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

Source Distribution

bash-0.6.tar.gz (2.8 kB view hashes)

Uploaded Source

Supported by

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