'indent'ing Python in windows bat

Hans Mulder hansmu at xs4all.nl
Wed Sep 19 14:23:07 EDT 2012


On 19/09/12 19:51:44, Albert Hopkins wrote:
> On Tue, 2012-09-18 at 22:12 -0600, Jason Friedman wrote:
>>> I'm converting windows bat files little by little to Python 3 as I find time
>>> and learn Python.
>>> The most efficient method for some lines is to call Python like:
>>> python -c "import sys; sys.exit(3)"
>>>
>>> How do I "indent" if I have something like:
>>> if (sR=='Cope'): sys.exit(1) elif (sR=='Perform') sys.exit(2) else
>>> sys.exit(3)
>>
>> Some months ago I posted what I think is a similar question in the
>> Unix world:  I wanted to call a small portion of Python from within a
>> Bash script.
>>
>> Someone on this list answered (for Bash):
>>
>> #!/bin/bash
>> command1
>> command2
>> python -c "if True:
>>     import module
>>     if condition:
>>         do_this
>>     else:
>>         do_that
>> "
>> command4
>> # end code
> 
> A better way (in *nix) would be, e.g.:
> 
>         #!/bin/sh                                                                            
>         
>         read -p 'Enter a number ' count
>         
>         python << EOF
>         print 'Odd numbers between 0 and ${count}'
>         for i in range(${count}):
>             if i % 2:
>                 print i
>         EOF
>         
> Horribly bad example, but you get the idea.

If you do it like that, you have to remember to not use certain
punctuation characters in your Python code, because they are
meaningful to the shell, even inside a <<EOF construct.

I'd prefer:

#!/bin/sh
read -p 'Enter a number ' count

python - $count <<'EOF'
import sys

count = int(sys.argv[1])

print "Odd numbers between 0 and %d" % count
for i in range(count):
    if i % 2:
        print i
EOF

When I use <<'EOF', I don't have to worry about the shell
interpreting some punctuation character in my Python code.

The downside is, I can't use ${count} to interpolate a shell
variable in my code; I have to pass it in as an explicit
argument.  Or maybe that's an upside: explicit is better
than implicit, and all that.


Hope this helps,

-- HansM



More information about the Python-list mailing list