[ACCEPTED]-Python Interactive Shell Type Application-console-application

Accepted answer
Score: 15

Just input the commands in a loop.

For parsing 4 the input, shlex.split is a nice option. Or just go 3 with plain str.split.

import readline
import shlex

print('Enter a command to do something, e.g. `create name price`.')
print('To get help, enter `help`.')

while True:
    cmd, *args = shlex.split(input('> '))

    if cmd=='exit':
        break

    elif cmd=='help':
        print('...')

    elif cmd=='create':
        name, cost = args
        cost = int(cost)
        # ...
        print('Created "{}", cost ${}'.format(name, cost))

    # ...

    else:
        print('Unknown command: {}'.format(cmd))

The readline library adds history functionality 2 (up arrow) and more. Python interactive 1 shell uses it.

Score: 9

Another approach to building interactive 4 applications like this is by using the cmd module.

# app.py
from cmd import Cmd

class MyCmd(Cmd):

    prompt = "> "

    def do_create(self, args):
        name, cost = args.rsplit(" ", 1) # args is string of input after create
        print('Created "{}", cost ${}'.format(name, cost))

    def do_del(self, name):
        print('Deleted {}'.format(name))

    def do_exit(self, args):
        raise SystemExit()

if __name__ == "__main__":

    app = MyCmd()
    app.cmdloop('Enter a command to do something. eg `create name price`.')

And 3 here is the output of running the above 2 code (if the above code was in a file named 1 app.py):

$ python app.py
Enter a command to do something. eg `create name price`.
> create item1 10
Created "item1", cost $10
> del item1
Deleted item1
> exit
$
Score: 0

You could start by having a look at argparse.

It 3 does not provide a complete interactive 2 shell, like you ask, but it helps in creating 1 functionality similar to your PHP example.

More Related questions