subprocess.popen question

Discussion in 'Python' started by Eric_Dexter@msn.com, Jun 20, 2007.

  1. Guest

    I am trying to modify a programming example and I am coming up with
    two problems... first is that I can't seem to pass along the
    arguments to the external command (I have been able to do that with
    the old module and cmd is the command I wish to try) all the output
    seems to be returned as one line (at least when I run the program in
    spe).

    import subprocess
    from os import system
    cmd = """gawk -f altertime.awk -v time_offset=4 -v
    outfile="testdat.sco" "i1.sco" """
    #subprocess.Popen.
    last_line = subprocess.Popen(['gawk.exe'],
    stdout=subprocess.PIPE).communicate()[0]
    xx = 0
    for line in last_line:
    xx = xx + 1
    if xx < 2:
    print line
    print str(xx)
    , Jun 20, 2007
    #1
    1. Advertising

  2. En Wed, 20 Jun 2007 12:27:47 -0300,
    <> escribió:

    > I am trying to modify a programming example and I am coming up with
    > two problems... first is that I can't seem to pass along the
    > arguments to the external command (I have been able to do that with
    > the old module and cmd is the command I wish to try) all the output
    > seems to be returned as one line (at least when I run the program in
    > spe).
    >
    > import subprocess
    > from os import system
    > cmd = """gawk -f altertime.awk -v time_offset=4 -v
    > outfile="testdat.sco" "i1.sco" """
    > #subprocess.Popen.
    > last_line = subprocess.Popen(['gawk.exe'],
    > stdout=subprocess.PIPE).communicate()[0]


    You build what appears to be the desired command line, but execute
    gawk.exe instead.
    Better split the arguments beforehand:
    cmd = ["gawk", "-f", "altertime.awk", "-v", "time_offset=4", "-v",
    "outfile=testdat.sco", "i1.sco"]
    Now, what do you want to do with the output? Printing it line by line?
    output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
    lines = output.splitlines()
    for line in lines:
    print line

    --
    Gabriel Genellina
    Gabriel Genellina, Jun 20, 2007
    #2
    1. Advertising

  3. Guest

    On Jun 20, 1:46 pm, "Gabriel Genellina" <>
    wrote:
    > En Wed, 20 Jun 2007 12:27:47 -0300,
    > <> escribió:
    >
    > > I am trying to modify a programming example and I am coming up with
    > > two problems... first is that I can't seem to pass along the
    > > arguments to the external command (I have been able to do that with
    > > the old module and cmd is the command I wish to try) all the output
    > > seems to be returned as one line (at least when I run the program in
    > > spe).

    >
    > > import subprocess
    > > from os import system
    > > cmd = """gawk -f altertime.awk -v time_offset=4 -v
    > > outfile="testdat.sco" "i1.sco" """
    > > #subprocess.Popen.
    > > last_line = subprocess.Popen(['gawk.exe'],
    > > stdout=subprocess.PIPE).communicate()[0]

    >
    > You build what appears to be the desired command line, but execute
    > gawk.exe instead.
    > Better split the arguments beforehand:
    > cmd = ["gawk", "-f", "altertime.awk", "-v", "time_offset=4", "-v",
    > "outfile=testdat.sco", "i1.sco"]
    > Now, what do you want to do with the output? Printing it line by line?
    > output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
    > lines = output.splitlines()
    > for line in lines:
    > print line
    >
    > --
    > Gabriel Genellina


    I had one test where I had cmd in place of gawk and one everything was
    in place of gawk.. I haven't tried what you have listed yet (I am
    getting ready to go to work so may have to wait until tommorow to try
    it) THanks for the help
    , Jun 20, 2007
    #3
  4. Guest

    On Jun 20, 1:46 pm, "Gabriel Genellina" <>
    wrote:
    > En Wed, 20 Jun 2007 12:27:47 -0300,
    > <> escribió:
    >
    > > I am trying to modify a programming example and I am coming up with
    > > two problems... first is that I can't seem to pass along the
    > > arguments to the external command (I have been able to do that with
    > > the old module and cmd is the command I wish to try) all the output
    > > seems to be returned as one line (at least when I run the program in
    > > spe).

    >
    > > import subprocess
    > > from os import system
    > > cmd = """gawk -f altertime.awk -v time_offset=4 -v
    > > outfile="testdat.sco" "i1.sco" """
    > > #subprocess.Popen.
    > > last_line = subprocess.Popen(['gawk.exe'],
    > > stdout=subprocess.PIPE).communicate()[0]

    >
    > You build what appears to be the desired command line, but execute
    > gawk.exe instead.
    > Better split the arguments beforehand:
    > cmd = ["gawk", "-f", "altertime.awk", "-v", "time_offset=4", "-v",
    > "outfile=testdat.sco", "i1.sco"]
    > Now, what do you want to do with the output? Printing it line by line?
    > output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
    > lines = output.splitlines()
    > for line in lines:
    > print line
    >
    > --
    > Gabriel Genellina


    C:\dex_tracker\pipe1.py
    Traceback (most recent call last):
    File "C:\dex_tracker\pipe1.py", line 14, in
    last_line = subprocess.Popen([cmd],
    stdout=subprocess.PIPE).communicate()[0]
    File "C:\Python25\lib\subprocess.py", line 593, in __init__
    errread, errwrite)
    File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
    startupinfo)
    WindowsError: [Error 2] The system cannot find the file specified
    Script terminated.

    I can write it out as a batch file and then run it but that is a messy
    hack..
    , Jun 21, 2007
    #4
  5. En Wed, 20 Jun 2007 20:02:52 -0300,
    <> escribió:

    > On Jun 20, 1:46 pm, "Gabriel Genellina" <>
    > wrote:
    >>
    >> cmd = ["gawk", "-f", "altertime.awk", "-v", "time_offset=4", "-v",
    >> "outfile=testdat.sco", "i1.sco"]
    >> Now, what do you want to do with the output? Printing it line by line?
    >> output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
    >> lines = output.splitlines()
    >> for line in lines:
    >> print line
    >>

    >
    > C:\dex_tracker\pipe1.py
    > Traceback (most recent call last):
    > File "C:\dex_tracker\pipe1.py", line 14, in
    > last_line = subprocess.Popen([cmd],
    > stdout=subprocess.PIPE).communicate()[0]
    > File "C:\Python25\lib\subprocess.py", line 593, in __init__
    > errread, errwrite)
    > File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
    > startupinfo)
    > WindowsError: [Error 2] The system cannot find the file specified
    > Script terminated.
    >
    > I can write it out as a batch file and then run it but that is a messy
    > hack..


    If cmd is a list of arguments, like the example above, you should use
    subprocess.Popen(cmd,...) (like the example above, too).

    --
    Gabriel Genellina
    Gabriel Genellina, Jun 21, 2007
    #5
  6. Guest

    On Jun 20, 7:50 pm, "Gabriel Genellina" <>
    wrote:
    > En Wed, 20 Jun 2007 20:02:52 -0300,
    > <> escribió:
    >
    >
    >
    >
    >
    > > On Jun 20, 1:46 pm, "Gabriel Genellina" <>
    > > wrote:

    >
    > >> cmd = ["gawk", "-f", "altertime.awk", "-v", "time_offset=4", "-v",
    > >> "outfile=testdat.sco", "i1.sco"]
    > >> Now, what do you want to do with the output? Printing it line by line?
    > >> output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
    > >> lines = output.splitlines()
    > >> for line in lines:
    > >> print line

    >
    > > C:\dex_tracker\pipe1.py
    > > Traceback (most recent call last):
    > > File "C:\dex_tracker\pipe1.py", line 14, in
    > > last_line = subprocess.Popen([cmd],
    > > stdout=subprocess.PIPE).communicate()[0]
    > > File "C:\Python25\lib\subprocess.py", line 593, in __init__
    > > errread, errwrite)
    > > File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
    > > startupinfo)
    > > WindowsError: [Error 2] The system cannot find the file specified
    > > Script terminated.

    >
    > > I can write it out as a batch file and then run it but that is a messy
    > > hack..

    >
    > If cmd is a list of arguments, like the example above, you should use
    > subprocess.Popen(cmd,...) (like the example above, too).
    >
    > --
    > Gabriel Genellina- Hide quoted text -
    >
    > - Show quoted text -



    I had cut and pasted the example in to get that error... could it be
    a problem with ms windows??? (I am at a library computer befour work
    so that ended my testing)
    , Jun 21, 2007
    #6
  7. En Wed, 20 Jun 2007 22:28:06 -0300,
    <> escribió:
    > On Jun 20, 7:50 pm, "Gabriel Genellina" <>
    > wrote:
    >> En Wed, 20 Jun 2007 20:02:52 -0300,
    >> <> escribió:
    >> > On Jun 20, 1:46 pm, "Gabriel Genellina" <>
    >> > wrote:

    >>
    >> >> cmd = ["gawk", "-f", "altertime.awk", "-v", "time_offset=4", "-v",
    >> >> "outfile=testdat.sco", "i1.sco"]
    >> >> Now, what do you want to do with the output? Printing it line by

    >> line?
    >> >> output = subprocess.Popen(cmd,

    >> stdout=subprocess.PIPE).communicate()[0]
    >> >> lines = output.splitlines()
    >> >> for line in lines:
    >> >> print line

    >>
    >> > C:\dex_tracker\pipe1.py
    >> > Traceback (most recent call last):
    >> > File "C:\dex_tracker\pipe1.py", line 14, in
    >> > last_line = subprocess.Popen([cmd],
    >> > stdout=subprocess.PIPE).communicate()[0]
    >> > File "C:\Python25\lib\subprocess.py", line 593, in __init__
    >> > errread, errwrite)
    >> > File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
    >> > startupinfo)
    >> > WindowsError: [Error 2] The system cannot find the file specified
    >> > Script terminated.

    >>
    >> > I can write it out as a batch file and then run it but that is a messy
    >> > hack..

    >>
    >> If cmd is a list of arguments, like the example above, you should use
    >> subprocess.Popen(cmd,...) (like the example above, too).

    >
    > I had cut and pasted the example in to get that error... could it be
    > a problem with ms windows??? (I am at a library computer befour work
    > so that ended my testing)


    Note the call to subprocess.Popen - is the first argument [cmd] or cmd?
    What do you get with print repr(cmd)?
    Do you have gawk installed on that machine too?

    --
    Gabriel Genellina
    Gabriel Genellina, Jun 21, 2007
    #7
  8. Guest

    On Jun 21, 1:22 am, "Gabriel Genellina" <>
    wrote:
    > En Wed, 20 Jun 2007 22:28:06 -0300,
    > <> escribió:
    >
    >
    >
    >
    >
    > > On Jun 20, 7:50 pm, "Gabriel Genellina" <>
    > > wrote:
    > >> En Wed, 20 Jun 2007 20:02:52 -0300,
    > >> <> escribió:
    > >> > On Jun 20, 1:46 pm, "Gabriel Genellina" <>
    > >> > wrote:

    >
    > >> >> cmd = ["gawk", "-f", "altertime.awk", "-v", "time_offset=4", "-v",
    > >> >> "outfile=testdat.sco", "i1.sco"]
    > >> >> Now, what do you want to do with the output? Printing it line by
    > >> line?
    > >> >> output = subprocess.Popen(cmd,
    > >> stdout=subprocess.PIPE).communicate()[0]
    > >> >> lines = output.splitlines()
    > >> >> for line in lines:
    > >> >> print line

    >
    > >> > C:\dex_tracker\pipe1.py
    > >> > Traceback (most recent call last):
    > >> > File "C:\dex_tracker\pipe1.py", line 14, in
    > >> > last_line = subprocess.Popen([cmd],
    > >> > stdout=subprocess.PIPE).communicate()[0]
    > >> > File "C:\Python25\lib\subprocess.py", line 593, in __init__
    > >> > errread, errwrite)
    > >> > File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
    > >> > startupinfo)
    > >> > WindowsError: [Error 2] The system cannot find the file specified
    > >> > Script terminated.

    >
    > >> > I can write it out as a batch file and then run it but that is a messy
    > >> > hack..

    >
    > >> If cmd is a list of arguments, like the example above, you should use
    > >> subprocess.Popen(cmd,...) (like the example above, too).

    >
    > > I had cut and pasted the example in to get that error... could it be
    > > a problem with ms windows??? (I am at a library computer befour work
    > > so that ended my testing)

    >
    > Note the call to subprocess.Popen- is the first argument [cmd] or cmd?
    > What do you get with print repr(cmd)?
    > Do you have gawk installed on that machine too?
    >
    > --
    > Gabriel Genellina- Hide quoted text -
    >
    > - Show quoted text -


    gawk is installed.. I do fine when I just call gawk I get all the
    options to use with it but the minute I try to use the options with it
    I have problems. I have done it with batch files but then I would
    have to write out a batch file and then run the batch file. seems
    like more work than I should have to do to use options with a command
    line program.. I have done this in other cases with os.startfile and
    other cases and would like to fix it.
    , Jun 22, 2007
    #8
  9. En Fri, 22 Jun 2007 01:05:36 -0300,
    <> escribió:

    >> >> >> cmd = ["gawk", "-f", "altertime.awk", "-v", "time_offset=4", "-v",
    >> >> >> "outfile=testdat.sco", "i1.sco"]
    >> >> >> output = subprocess.Popen(cmd,
    >> >> stdout=subprocess.PIPE).communicate()[0]
    >> >> >> lines = output.splitlines()
    >> >> >> for line in lines:
    >> >> >> print line

    >>
    >> >> > C:\dex_tracker\pipe1.py
    >> >> > Traceback (most recent call last):
    >> >> > File "C:\dex_tracker\pipe1.py", line 14, in
    >> >> > last_line = subprocess.Popen([cmd],
    >> >> > stdout=subprocess.PIPE).communicate()[0]
    >> >> > File "C:\Python25\lib\subprocess.py", line 593, in __init__
    >> >> > errread, errwrite)
    >> >> > File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
    >> >> > startupinfo)
    >> >> > WindowsError: [Error 2] The system cannot find the file specified
    >> >> > Script terminated.

    >>
    >> >> > I can write it out as a batch file and then run it but that is a

    >> messy
    >> >> > hack..

    >>
    >> >> If cmd is a list of arguments, like the example above, you should use
    >> >> subprocess.Popen(cmd,...) (like the example above, too).

    >>
    >> > I had cut and pasted the example in to get that error... could it be
    >> > a problem with ms windows??? (I am at a library computer befour work
    >> > so that ended my testing)

    >>
    >> Note the call to subprocess.Popen- is the first argument [cmd] or cmd?
    >> What do you get with print repr(cmd)?
    >> Do you have gawk installed on that machine too?

    >
    > gawk is installed.. I do fine when I just call gawk I get all the
    > options to use with it but the minute I try to use the options with it
    > I have problems. I have done it with batch files but then I would
    > have to write out a batch file and then run the batch file. seems
    > like more work than I should have to do to use options with a command
    > line program.. I have done this in other cases with os.startfile and
    > other cases and would like to fix it.


    Ok, but please check *what* are the arguments to Popen. If cmd is a *list*
    as shown on the first quoted line on this message, you should call
    subprocess.Popen(cmd, ...) as shown on the third line on this message, but
    your traceback shows that you are using Popen([cmd], ...)
    Can you see the difference?

    --
    Gabriel Genellina
    Gabriel Genellina, Jun 22, 2007
    #9
  10. Guest

    On Jun 22, 12:10 am, "Gabriel Genellina" <>
    wrote:
    > En Fri, 22 Jun 2007 01:05:36 -0300,
    > <> escribió:
    >
    >
    >
    >
    >
    > >> >> >> cmd = ["gawk", "-f", "altertime.awk", "-v", "time_offset=4", "-v",
    > >> >> >> "outfile=testdat.sco", "i1.sco"]
    > >> >> >> output = subprocess.Popen(cmd,
    > >> >> stdout=subprocess.PIPE).communicate()[0]
    > >> >> >> lines = output.splitlines()
    > >> >> >> for line in lines:
    > >> >> >> print line

    >
    > >> >> > C:\dex_tracker\pipe1.py
    > >> >> > Traceback (most recent call last):
    > >> >> > File "C:\dex_tracker\pipe1.py", line 14, in
    > >> >> > last_line = subprocess.Popen([cmd],
    > >> >> > stdout=subprocess.PIPE).communicate()[0]
    > >> >> > File "C:\Python25\lib\subprocess.py", line 593, in __init__
    > >> >> > errread, errwrite)
    > >> >> > File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
    > >> >> > startupinfo)
    > >> >> > WindowsError: [Error 2] The system cannot find the file specified
    > >> >> > Script terminated.

    >
    > >> >> > I can write it out as a batch file and then run it but that is a
    > >> messy
    > >> >> > hack..

    >
    > >> >> If cmd is a list of arguments, like the example above, you should use
    > >> >> subprocess.Popen(cmd,...) (like the example above, too).

    >
    > >> > I had cut and pasted the example in to get that error... could it be
    > >> > a problem with ms windows??? (I am at a library computer befour work
    > >> > so that ended my testing)

    >
    > >> Note the call to subprocess.Popen- is the first argument [cmd] or cmd?
    > >> What do you get with print repr(cmd)?
    > >> Do you have gawk installed on that machine too?

    >
    > > gawk is installed.. I do fine when I just call gawk I get all the
    > > options to use with it but the minute I try to use the options with it
    > > I have problems. I have done it with batch files but then I would
    > > have to write out a batch file and then run the batch file. seems
    > > like more work than I should have to do to use options with a command
    > > line program.. I have done this in other cases with os.startfile and
    > > other cases and would like to fix it.

    >
    > Ok, but please check *what* are the arguments toPopen. If cmd is a *list*
    > as shown on the first quoted line on this message, you should call
    > subprocess.Popen(cmd, ...) as shown on the third line on this message, but
    > your traceback shows that you are usingPopen([cmd], ...)
    > Can you see the difference?
    >
    > --
    > Gabriel Genellina- Hide quoted text -
    >
    > - Show quoted text -


    I seemed to have it working sorta when I run it and save the results I
    am noticing that in spe it spaces correctly but when I save it to a
    file I can open it in wordpad there is only one line. when I open in
    up in WinXound (A csound editor) it is double spaced. if I do it in a
    batch file the output file is spaced correctly.. when I do splitlines
    it is giving me one charecter down the page as output.. Do I need to
    do something or can I do something to put an end of line charecter in
    the output??
    , Jun 22, 2007
    #10
  11. En Fri, 22 Jun 2007 10:08:49 -0300,
    <> escribió:

    > I seemed to have it working sorta when I run it and save the results I
    > am noticing that in spe it spaces correctly but when I save it to a
    > file I can open it in wordpad there is only one line. when I open in
    > up in WinXound (A csound editor) it is double spaced. if I do it in a
    > batch file the output file is spaced correctly.. when I do splitlines
    > it is giving me one charecter down the page as output.. Do I need to
    > do something or can I do something to put an end of line charecter in
    > the output??


    Try

    print repr(your_data)

    to see exactly what you got.

    --
    Gabriel Genellina
    Gabriel Genellina, Jun 23, 2007
    #11
  12. On Jun 23, 5:35 am, "Gabriel Genellina" <>
    wrote:
    > En Fri, 22 Jun 2007 10:08:49 -0300,
    > <> escribió:
    >
    > > I seemed to have it working sorta when I run it and save the results I
    > > am noticing that inspeit spaces correctly but when I save it to a
    > > file I can open it in wordpad there is only one line. when I open in
    > > up in WinXound (A csound editor) it is double spaced. if I do it in a
    > > batch file the output file is spaced correctly.. when I do splitlines
    > > it is giving me one charecter down the page as output.. Do I need to
    > > do something or can I do something to put an end of line charecter in
    > > the output??

    >
    > Try
    >
    > print repr(your_data)
    >
    > to see exactly what you got.
    >
    > --
    > Gabriel Genellina


    Did you take in account that line endings on Windows are '\r\n' and
    not '\n'?

    Stani
    --
    http://pythonide.stani.be
    SPE - Stani's Python Editor, Jun 23, 2007
    #12
  13. Guest

    On Jun 23, 6:46 am, SPE - Stani's Python Editor
    <> wrote:
    > On Jun 23, 5:35 am, "Gabriel Genellina" <>
    > wrote:
    >
    >
    >
    >
    >
    > > En Fri, 22 Jun 2007 10:08:49 -0300,
    > > <> escribió:

    >
    > > > I seemed to have it working sorta when I run it and save the results I
    > > > am noticing that inspeit spaces correctly but when I save it to a
    > > > file I can open it in wordpad there is only one line. when I open in
    > > > up in WinXound (Acsoundeditor) it is double spaced. if I do it in a
    > > > batch file the output file is spaced correctly.. when I do splitlines
    > > > it is giving me one charecter down the page as output.. Do I need to
    > > > do something or can I do something to put an end of line charecter in
    > > > the output??

    >
    > > Try

    >
    > > print repr(your_data)

    >
    > > to see exactly what you got.

    >
    > > --
    > > Gabriel Genellina

    >
    > Did you take in account that line endings on Windows are '\r\n' and
    > not '\n'?
    >
    > Stani
    > --http://pythonide.stani.be- Hide quoted text -
    >
    > - Show quoted text -


    evedently when they converted awk from unix to windows (gawk) they
    left the formating the same.. python is working corectly then. gawk
    seems to return the original line and then the changed line unless I
    redirect it to a file.... Thanks for the help, at this point it is up
    to me to go through the different versions of awk to find out how they
    work with the data... (awke, gawk, mawk, nawk.. exc..)
    , Jun 25, 2007
    #13
    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. WolfgangZ

    subprocess.Popen(cmd) question

    WolfgangZ, Aug 10, 2007, in forum: Python
    Replies:
    1
    Views:
    392
    Peter Otten
    Aug 10, 2007
  2. Danny Wong (dannwong)

    subprocess.Popen question

    Danny Wong (dannwong), Aug 16, 2011, in forum: Python
    Replies:
    2
    Views:
    190
    Nobody
    Aug 16, 2011
  3. Alex Naumov
    Replies:
    0
    Views:
    82
    Alex Naumov
    May 23, 2013
  4. Peter Otten
    Replies:
    0
    Views:
    83
    Peter Otten
    May 23, 2013
  5. Alex Naumov
    Replies:
    0
    Views:
    85
    Alex Naumov
    May 23, 2013
Loading...

Share This Page