strange behavior with os.system

2009-06-16 Thread kmw
Hi,

I wanted to write a simple script (in 5 minutes or so) which replaces
the option '+1' given to the command 'sort' by '-k 2' and than runs
'sort' with the modified argument list. After two hours I am giving up
and ask you for help. This is what I tried (please excuse the verbose
code, it is due to my various efforts to understand the error):

#!/usr/bin/python
import sys, os, re
arguments = sys.argv[0]
for i in sys.argv[1:]:
arguments += " " + i
p = re.compile ( "(\+(\d+))" )
m = p.search ( arguments )
print type ( m )
m_list = list ( m.groups () )
print type ( m_list )
from1 = str ( m_list[0] )
to1 = "-k " + str ( int ( m_list[1] ) + 1 )
cmd1 = str ( arguments.replace ( from1, to1 ) )
print cmd1
os.system ( cmd1 )

Now, this is what I get (on three different machines with different
versions of python):


./sort -F -k 2 -e

Traceback (most recent call last):
  File "./sort", line 9, in 
m_list = list ( m.groups () )
AttributeError: 'NoneType' object has no attribute 'groups'

Please note the unrequested output of ''. The strange
thing about this all is the fact that  the whole thing works as
expected when typed  into the interpreter. I would be glad if anyone
could help.

Best regards,
Kay
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: strange behavior with os.system

2009-06-17 Thread kmw
That's it. I am calling my own program and not coreutils' sort, what
explains the unrequested output. Many thanks.

Cheers,
Kay

On 16 Jun., 22:16, Piet van Oostrum  wrote:
> >>>>> kmw  (k) wrote:
> >k> Hi,
> >k> I wanted to write a simple script (in 5 minutes or so) which replaces
> >k> the option '+1' given to the command 'sort' by '-k 2' and than runs
> >k> 'sort' with the modified argument list. After two hours I am giving up
> >k> and ask you for help. This is what I tried (please excuse the verbose
> >k> code, it is due to my various efforts to understand the error):
>
> [snip]
>
> >k> Please note the unrequested output of ''. The strange
> >k> thing about this all is the fact that  the whole thing works as
> >k> expected when typed  into the interpreter. I would be glad if anyone
> >k> could help.
>
> MRAB has already given you some insight, I hope.
> But are you aware that you are calling your own program again?
> Or did you want to call the standard sort program? In that case you
> shouldn't call ./sort as it is in argv[0], but just sort (assuming '.'
> is not in your PATH) or the full path, like /usr/bin/sort.
> --
> Piet van Oostrum 
> URL:http://pietvanoostrum.com[PGP 8DAE142BE17999C4]
> Private email: p...@vanoostrum.org

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