Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   Re: 'indent'ing Python in windows bat (http://www.velocityreviews.com/forums/t952425-re-indenting-python-in-windows-bat.html)

Albert Hopkins 09-19-2012 05:51 PM

Re: 'indent'ing Python in windows bat
 
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.


Hans Mulder 09-19-2012 06:23 PM

Re: 'indent'ing Python in windows bat
 
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


All times are GMT. The time now is 04:08 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.