Getting started

This library is pretty easy to use:

from python_shell import Shell
from python_shell.util.streaming import decode_stream

Shell.ls('-l', '$HOME')  # Equals "ls -l $HOME"

command = Shell.whoami()  # Equals "whoami"
print(command)  # Prints representation of command in shell

print(command.command)  # prints "whoami"
print(repr(command))  # Does the same as above

print(command.return_code)  # prints "0"
print(command.arguments)  # prints ""

print(decode_stream(command.output)) # Prints out command's stdout
print(decode_stream(command.errors)) # Prints out command's stderr

To run any Bash command, you need to do it like this:

Shell.<bash_command_name>(<bash command parameters>)

For example, you want to create a new folder:

Shell.mkdir('-p', '/tmp/new_folder')

It's also possible to run a command which name is not a valid Python identifier. To do this, use Shell class as a callable instance:

command = Shell('2to3')

When the command fails (returncode is non-zero), Shell throws a ShellException error. However, even if you didn't save a reference to your command, you still can access it. To do this, try

last_cmd = Shell.last_command