Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > a question

Reply
Thread Tools

a question

 
 
Nader Emami
Guest
Posts: n/a
 
      01-19-2005
L.S.,

I have a long command in Unix and I have to use os.system(cmd)
statement. I do the following:

cmd = '%s/mos user wmarch, cd /fa/wm/%s/%s, mkdir %s, put %s, chmod 644
%s' % (mosbin, jaar, filetype, filetype)
status = os.system(cmd)


This is not very clear, and I have to break this long line in two
segment by means of the next character '\' :
cmd = '%s/mos user wmarch, cd /fa/wm/%s/%s, mkdir %s, put %s, \
chmod 644 %s' % (mosbin, jaar, filetype, filetype)

But in this case I get a syntax error! I don't know how I can solve this
problem. Could somebody tell me about this?

With regards,
Nader


(this
 
Reply With Quote
 
 
 
 
Steve Holden
Guest
Posts: n/a
 
      01-19-2005
Nader Emami wrote:
> L.S.,
>
> I have a long command in Unix and I have to use os.system(cmd)
> statement. I do the following:
>
> cmd = '%s/mos user wmarch, cd /fa/wm/%s/%s, mkdir %s, put %s, chmod 644
> %s' % (mosbin, jaar, filetype, filetype)
> status = os.system(cmd)
>
>
> This is not very clear, and I have to break this long line in two
> segment by means of the next character '\' :
> cmd = '%s/mos user wmarch, cd /fa/wm/%s/%s, mkdir %s, put %s, \
> chmod 644 %s' % (mosbin, jaar, filetype, filetype)
>
> But in this case I get a syntax error! I don't know how I can solve this
> problem. Could somebody tell me about this?
>

The error you get is NOT a syntax error:

>>> cmd = '%s format %s \

... over %d lines' % ('my', 'string', 2)
>>> cmd

'my format string over 2 lines'
>>>


The interpreter is probably complaining because it needs six values to
fill out the format and you only provided four.

In future, by the way, always include the error message in such posts!

regards
Steve
--
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/
Holden Web LLC +1 703 861 4237 +1 800 494 3119
 
Reply With Quote
 
 
 
 
Andrew Koenig
Guest
Posts: n/a
 
      01-19-2005
"Steve Holden" <> wrote in message
news:3YvHd.80953$Jk5.28602@lakeread01...

> The error you get is NOT a syntax error:
>
> >>> cmd = '%s format %s \

> ... over %d lines' % ('my', 'string', 2)
> >>> cmd

> 'my format string over 2 lines'
> >>>

>
> The interpreter is probably complaining because it needs six values to
> fill out the format and you only provided four.


Also, I'm dubious about the idea of splitting a string literal across
multiple lines, as it's impossible to indent such a literal nicely without
putting stray spaces into its contents. So instead of writing

'this is a\
long string'

and not making it clear how many spaces you intend between 'a' and 'long',
how about writing this instead?

('this is a '
'long string')

in which the contents are not in doubt. This code takes advantage of two
properties of Python:

1) Multiple string literals with only whitespace between them are
automatically concatenated;

2) Ending a line inside unbalanced parentheses implicitly makes the next
line part of the same statement.


 
Reply With Quote
 
Will Stuyvesant
Guest
Posts: n/a
 
      01-19-2005

Andrew Koenig wrote:
> how about writing this instead?
>
> ('this is a '
> 'long string')


Yes, nice. And to make that possible we have to write
('one-string-item',) instead of ('one-string-item') if we want a tuple
with one string inside. Sometimes that feels like a wart to me, but
now I know it, sometimes not.

 
Reply With Quote
 
Steve Holden
Guest
Posts: n/a
 
      01-19-2005
Will Stuyvesant wrote:

> Andrew Koenig wrote:
>
>>how about writing this instead?
>>
>> ('this is a '
>> 'long string')

>
>
> Yes, nice. And to make that possible we have to write
> ('one-string-item',) instead of ('one-string-item') if we want a tuple
> with one string inside. Sometimes that feels like a wart to me, but
> now I know it, sometimes not.
>

That has very little to do with tuples. You could just as easily write

'this is a '\
'long string'

It's the dangling comma that's required to specify a tuple:

>>> 1,

(1,)
>>>


regards
Steve
--
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/
Holden Web LLC +1 703 861 4237 +1 800 494 3119
 
Reply With Quote
 
Bill Mill
Guest
Posts: n/a
 
      01-19-2005
Nader,

You've got a couple problems. First, you need to end the string before
putting a continuation in. Secondly, you have 6 variables to be
substituted and only provide 4. Here's some code, edited to show how
to use continutations to join strings:

>>> mosbin, jaar, filetype = (1,1,1)
>>> cmd = '%s/mos user wmarch, cd /fa/wm/%s/%s, mkdir %s, put %s'\

.... '%s' % (mosbin, jaar, filetype, filetype, filetype, filetype)
>>> cmd

'1/mos user wmarch, cd /fa/wm/1/1, mkdir 1, put 1, chmod 6441'

Peace
Bill Mill
bill.mill at gmail.com

On Wed, 19 Jan 2005 16:16:32 +0000, Nader Emami <> wrote:
> L.S.,
>
> I have a long command in Unix and I have to use os.system(cmd)
> statement. I do the following:
>
> cmd = '%s/mos user wmarch, cd /fa/wm/%s/%s, mkdir %s, put %s, chmod 644
> %s' % (mosbin, jaar, filetype, filetype)
> status = os.system(cmd)
>
> This is not very clear, and I have to break this long line in two
> segment by means of the next character '\' :
> cmd = '%s/mos user wmarch, cd /fa/wm/%s/%s, mkdir %s, put %s, \
> chmod 644 %s' % (mosbin, jaar, filetype, filetype)
>
> But in this case I get a syntax error! I don't know how I can solve this
> problem. Could somebody tell me about this?
>
> With regards,
> Nader
>
> (this
> --
> http://mail.python.org/mailman/listinfo/python-list
>

 
Reply With Quote
 
Paul McGuire
Guest
Posts: n/a
 
      01-19-2005
"Will Stuyvesant" <> wrote in message
news: oups.com...
>
> Andrew Koenig wrote:
> > how about writing this instead?
> >
> > ('this is a '
> > 'long string')

>
> Yes, nice. And to make that possible we have to write
> ('one-string-item',) instead of ('one-string-item') if we want a tuple
> with one string inside. Sometimes that feels like a wart to me, but
> now I know it, sometimes not.
>

I don't think the goal was to have a tuple with a single string in it. The
poster said he was taking advantage of two features of Python:

"1) Multiple string literals with only whitespace between them are
automatically concatenated;

2) Ending a line inside unbalanced parentheses implicitly makes the next
line part of the same statement."

The parens are there just to avoid using the '\' continuation character.

-- Paul


 
Reply With Quote
 
Fredrik Lundh
Guest
Posts: n/a
 
      01-19-2005
Bill Mill wrote:

> You've got a couple problems. First, you need to end the string before
> putting a continuation in.


>>> "no\

.... pe"
'nope'

>>> "however\

File "<stdin>", line 1
"however\
^
SyntaxError: EOL while scanning single-quoted string

(in the second case, the ^ is trying to point out that I added
some whitespace after the backslash)

</F>



 
Reply With Quote
 
Bill Mill
Guest
Posts: n/a
 
      01-19-2005
You are correct, sir. Didn't know you could do that. Neato.

Peace
Bill Mill
bill.mill at gmail.com

On Wed, 19 Jan 2005 22:10:05 +0100, Fredrik Lundh
<> wrote:
> Bill Mill wrote:
>
> > You've got a couple problems. First, you need to end the string before
> > putting a continuation in.

>
> >>> "no\

> ... pe"
> 'nope'
>
> >>> "however\

> File "<stdin>", line 1
> "however\
> ^
> SyntaxError: EOL while scanning single-quoted string
>
> (in the second case, the ^ is trying to point out that I added
> some whitespace after the backslash)
>
> </F>
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
question row filter (more of sql query question) =?Utf-8?B?YW5kcmV3MDA3?= ASP .Net 2 10-06-2005 01:07 PM
Quick Question - Newby Question =?Utf-8?B?UnlhbiBTbWl0aA==?= ASP .Net 4 02-16-2005 11:59 AM
Question on Transcender Question :-) eddiec MCSE 6 05-20-2004 06:59 AM
Question re: features of the 831 router (also a 924 question) Wayne Cisco 0 03-02-2004 07:57 PM
Syntax Question - Novice Question sean ASP .Net 1 10-20-2003 12:18 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57