On 1/28/2010 3:45 PM, Joan Miller wrote:
On 28 ene, 20:34, Joan Miller<pelok...@gmail.com>  wrote:
On 28 ene, 20:20, Peter<peter.milli...@gmail.com>  wrote:

On Jan 29, 6:58 am, John Posner<jjpos...@optimum.net>  wrote:

On 1/28/2010 2:24 PM, Joan Miller wrote:

On 28 ene, 19:16, Josh Holland<j...@joshh.co.uk>    wrote:
On 2010-01-28, Joan Miller<pelok...@gmail.com>    wrote:

I've to call to many functions with the format:

run("cmd")

Check the docs on os.system().
No. I've a function that uses subprocess to run commands on the same
shell and so substitute to bash scrips. But a script full of run
("shell_command --with --arguments") is too verbose.

I'm suspicious of your original intent. Essentially, you want to write
code in which a literal string, such as ...

    ls -l

... is *not* enclosed in quotes. Why run the risk of creating confusion
(in other people who look at your code, in syntax-checking tools, etc.)
between variables and literals?

But I'm in sympathy with your desire to make the code as clean as
possible and to minimize the number of times you have to type a quote
character. My suggestions:

1. Create a function (say, "Run") that encapsulates as much of the
syntax as possible: os.system(), subprocess.call(), string-splitting,
whatever. So an invocation would look like this:

    Run("ls -l *.txt")

(I think you've already done this step.)

2. Find a text editor that supports keyboard macros, so that a single
keystroke turns this text line:

    ls -l *.txt

... into this one:

    Run("ls -l *.txt")

HTH,
John

I can't see you avoiding quotes etc, but extending on John's comment,
the obvious next step would be to run everything in a loop i.e. place
all the commands into a list and create a loop that ran each command
in the list.

Yes, but could be necessary that were mixed with python code.

Almost all editors support macros - most editors support some form of
language sensitive editing (NOT the prompt call parameters style but
rather help with the syntax via a 'form' style of fill-in) that will
allow you to reduce typing effort. But macros would be the first and
easiest choice for this activity.

The goal of my program is substitute to bash scripts, so the macros in
editors are irrelevant fo this one.

I think that the best solution that I've is to build a program that
parses the script to convert *$ command* to run("command") before of
be called by python.

I believe you're working on Linux, so how about using "sed"? Here's a (prettified) BASH transcript of a sed script (edit.sed) transforming a 6-line text file (myprog.py). The text file has both Python statements and "special commands", which have "$ " at the beginning of the line.

>>> cat myprog.py
print "hello"
$ ls -l
r = range(10)
$ grep foo bar.data
pass
print "bye"


>>> cat edit.sed
s/^\$ \(.*\)/Run("\1")/


>>> sed -f edit.sed data.txt
print "hello"
Run("ls -l")
r = range(10)
Run("grep foo bar.data")
pass
print "bye"

-John
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to