popen4 not returning output
Michael Bentley
michael at jedimindworks.com
Mon Aug 20 02:14:08 EDT 2007
On Aug 19, 2007, at 8:58 PM, hortitude at gmail.com wrote:
> I am trying to run the following script:
>
>
> #!/usr/bin/python
>
> import popen2
>
> commandToRun = """scp scp_trial.py user at host:/targetDirectory"""
> #commandToRun = "ls"
> print commandToRun
> p_out, p_in = popen2.popen4 (commandToRun)
>
> theOut = p_out.readlines ()
> print theOut
>
>
> When I run this command with the "ls" command I see the output.
> When I run this with the scp command I do not see the output of my
> command -- however the file is successfully transfered. How can I see
> the output?
>
scp will not produce output on stdout or stderr if stdout/stderr is
redirected. I assume it uses an ioctl with TCGETA to determine the
terminal characteristics of the device connected to stdout, and get
either an EINVAL (for a pipe) or ENOTTY (for a file) failure when no
terminal is attached.
You can test whether it works the same on your system by running your
scp from the command line and redirecting the output:
scp scp_trial.py user at host:/targetDirectory >scp.stdout 2>scp.stderr
Both files will exist (the shell does this before starting the scp
command), but will (I think) be empty.
hope this helps,
Michael
---
The Rules of Optimization are simple.
Rule 1: Don't do it.
Rule 2 (for experts only): Don't do it yet.
-Michael A. Jackson
More information about the Python-list
mailing list