I recently started learning python. I have created some basic webapps with Django and wrote some simple scripts. After using VIM as a Python IDE I really fell I love with "Terminal programs" (is there an official term for this?). Right now I am capable of doing simple things like asking someones age and printing it to the screen. However this comes down to running a .py script and after this script is done the normal bash return. I would like create a program that I can run from the command line and that would allow the same user experience as VIM (one that you open and close). For example I created a simple script to import RSS feeds. It would be cool if I could open my terminal type the name of my program -> program would open -> Then I would like to use commands like :findsomething. Basically have real interaction with my program.
To conclude:
- How would I go about creating such a program?
- What kinds of modules, books or site would you recommend
On a *nix system (linux/unix),
if you:
and add the path to python as the first line of
your_file.py
:or (in my case):
Once you do that, instead of running it like this:
You can run it like this:
or even rename it to
yourfile
and run it like this:and if you then copy
yourfile
to your bin (i.e.#!/usr/bin/
, or#!/usr/local/bin/
) you can run it like this:Then you can...
Use
raw_input()
to solicit and get input from you user.your_file.py
:your_file.py
use example:Grab arguments with
sys.argv
from the command line when you run your script:list_argv.py
:list_argv.py
use example:Replace
raw_input()
withsys.argv
.'your_ls.py':
'your_ls.py' use example:
Use
subprocess.Popen
to access anything you could from the command line.your_subprocess.py
:your_subprocess.py
use example:BREAK STUFF!
:-D
HAVE FUN!
-ox
You should take a look at the cmd module.
See the Python Cookbook for examples of its use.
A true command-line program is something in the vein of
ls
orgrep
; it is started from the command-line, but it's non-interactive and can be used in pipelines and combined with other programs. A typical command-line program has no interactive user experience, instead relying on shell's history and init file for customization.What you want to create is a curses application, that uses the full capabilities of the TTY as an interactive platform, for better or worse. To do that, look up curses.
THe simplest way to do an interactive console application would be:
That's the basic structure. If you want something more vim-like, you'll probably need to use the curses library.
If you want to create an standalone binary for a UNIX system, use
freeze
. If you want one for a Windows system, look intopy2exe
. To control locations of output on your screen, use thecurses
module.