a question

Discussion in 'Python' started by Nader Emami, Jan 19, 2005.

  1. Nader Emami

    Nader Emami Guest

    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
    Nader Emami, Jan 19, 2005
    #1
    1. Advertising

  2. Nader Emami

    Steve Holden Guest

    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
    Steve Holden, Jan 19, 2005
    #2
    1. Advertising

  3. "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.
    Andrew Koenig, Jan 19, 2005
    #3
  4. 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.
    Will Stuyvesant, Jan 19, 2005
    #4
  5. Nader Emami

    Steve Holden Guest

    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
    Steve Holden, Jan 19, 2005
    #5
  6. Nader Emami

    Bill Mill Guest

    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
    >
    Bill Mill, Jan 19, 2005
    #6
  7. Nader Emami

    Paul McGuire Guest

    "Will Stuyvesant" <> wrote in message
    news:...
    >
    > 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
    Paul McGuire, Jan 19, 2005
    #7
  8. 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>
    Fredrik Lundh, Jan 19, 2005
    #8
  9. Nader Emami

    Bill Mill Guest

    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
    >
    Bill Mill, Jan 19, 2005
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. sean
    Replies:
    1
    Views:
    589
    Cowboy \(Gregory A. Beamer\)
    Oct 20, 2003
  2. =?Utf-8?B?UnlhbiBTbWl0aA==?=

    Quick Question - Newby Question

    =?Utf-8?B?UnlhbiBTbWl0aA==?=, Feb 14, 2005, in forum: ASP .Net
    Replies:
    4
    Views:
    644
    Iain Norman
    Feb 16, 2005
  3. =?Utf-8?B?YW5kcmV3MDA3?=

    question row filter (more of sql query question)

    =?Utf-8?B?YW5kcmV3MDA3?=, Oct 5, 2005, in forum: ASP .Net
    Replies:
    2
    Views:
    939
    Scott Allen
    Oct 6, 2005
  4. Philip Meyer
    Replies:
    0
    Views:
    412
    Philip Meyer
    Nov 30, 2003
  5. Bit Byte
    Replies:
    1
    Views:
    835
    Teemu Keiski
    Jan 28, 2007
Loading...

Share This Page