subprocess.popen question

E

Eric_Dexter

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)
 
G

Gabriel Genellina

En Wed, 20 Jun 2007 12:27:47 -0300, (e-mail address removed)
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
 
E

Eric_Dexter

En Wed, 20 Jun 2007 12:27:47 -0300, (e-mail address removed)
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

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
 
E

Eric_Dexter

En Wed, 20 Jun 2007 12:27:47 -0300, (e-mail address removed)
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

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..
 
G

Gabriel Genellina

En Wed, 20 Jun 2007 20:02:52 -0300, (e-mail address removed)
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).
 
E

Eric_Dexter

En Wed, 20 Jun 2007 20:02:52 -0300, (e-mail address removed)
<[email protected]> escribió:




On Jun 20, 1:46 pm, "Gabriel Genellina" <[email protected]>
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)
 
G

Gabriel Genellina

En Wed, 20 Jun 2007 22:28:06 -0300, (e-mail address removed)
En Wed, 20 Jun 2007 20:02:52 -0300, (e-mail address removed)
On Jun 20, 1:46 pm, "Gabriel Genellina" <[email protected]>
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?
 
E

Eric_Dexter

En Wed, 20 Jun 2007 22:28:06 -0300, (e-mail address removed)
<[email protected]> escribió:




En Wed, 20 Jun 2007 20:02:52 -0300, (e-mail address removed)
<[email protected]> escribió:
On Jun 20, 1:46 pm, "Gabriel Genellina" <[email protected]>
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?

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.
 
G

Gabriel Genellina

En Fri, 22 Jun 2007 01:05:36 -0300, (e-mail address removed)
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

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?
 
E

Eric_Dexter

En Fri, 22 Jun 2007 01:05:36 -0300, (e-mail address removed)
<[email protected]> 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?

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??
 
G

Gabriel Genellina

En Fri, 22 Jun 2007 10:08:49 -0300, (e-mail address removed)
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.
 
S

SPE - Stani's Python Editor

En Fri, 22 Jun 2007 10:08:49 -0300, (e-mail address removed)


Try

print repr(your_data)

to see exactly what you got.

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

Stani
 
E

Eric_Dexter

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..)
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top