how to change os.popen4 to subprocess

S

skyworld

Hi,

I'm new to python and I'm trying to porting some scripts from v0.96 to
v2.0.1. A piece of code is like this:

cmd_h = os.popen4(env['SYSCMDLINE'])[1]

the system indicates the popen4 is deprecated and suggest to use
subprocess. Can anybody tell me how to use subprocess in this case?
and what does "[1]" here means?

thanks.
 
M

MRAB

Hi,

I'm new to python and I'm trying to porting some scripts from v0.96 to
v2.0.1. A piece of code is like this:

cmd_h = os.popen4(env['SYSCMDLINE'])[1]

the system indicates the popen4 is deprecated and suggest to use
subprocess. Can anybody tell me how to use subprocess in this case?
and what does "[1]" here means?
os.popen4 returns a tuple of (child_stdin, child_stdout_and_stderr).
The [1] gets the child_stdout_and_stderr member.

Using the subprocess module:

# Untested!
cmd_h = subprocess.Popen(env['SYSCMDLINE'], stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, shell=True).stdout

Explanation:

The command line: env['SYSCMDLINE']

Return stdout: stdout=subprocess.PIPE

stderr should be combined with stdout: stderr=subprocess.STDOUT

Let the shell parse the command line: shell=True
 
M

Mark Lawrence

Hi,

I'm new to python and I'm trying to porting some scripts from v0.96 to
v2.0.1. A piece of code is like this:

What software are you talking about here, it's certainly not Python
versions as the most up to date are 2.7.3 and 3.3.0?
cmd_h = os.popen4(env['SYSCMDLINE'])[1]

the system indicates the popen4 is deprecated and suggest to use
subprocess. Can anybody tell me how to use subprocess in this case?
and what does "[1]" here means?

If you don't know what the [1] means you've got problems :) I suggest
you read the tutorial here first
http://docs.python.org/tutorial/index.html then the subprocess module
here http://docs.python.org/library/subprocess.html#module-subprocess,
specifically
http://docs.python.org/library/subprocess.html#subprocess-replacements

No problem.
 
S

skyworld

On 2012-10-27 03:28, skyworld wrote:> Hi,
I'm new to python and I'm trying to porting some scripts from v0.96 to
v2.0.1. A piece of code is like this:
cmd_h = os.popen4(env['SYSCMDLINE'])[1]
the system indicates the popen4 is deprecated and suggest to use
subprocess. Can anybody tell me how to use subprocess in this case?
and what does "[1]" here means?

os.popen4 returns a tuple of (child_stdin, child_stdout_and_stderr).
The [1] gets the child_stdout_and_stderr member.

Using the subprocess module:

# Untested!
cmd_h = subprocess.Popen(env['SYSCMDLINE'], stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, shell=True).stdout

Explanation:

The command line: env['SYSCMDLINE']

Return stdout: stdout=subprocess.PIPE

stderr should be combined with stdout: stderr=subprocess.STDOUT

Let the shell parse the command line: shell=True

thanks
 
P

Prasad, Ramit

Replying to skyworld because I could not find the original message
from MRAB.

skyworld said:
On 2012-10-27 03:28, skyworld wrote:> Hi,

I'm new to python and I'm trying to porting some scripts from v0.96 to
v2.0.1. A piece of code is like this:

cmd_h = os.popen4(env['SYSCMDLINE'])[1]

the system indicates the popen4 is deprecated andsuggest to use
subprocess. Can anybody tell me how to use subprocess in this case?
and what does "[1]" here means?

os.popen4 returns a tuple of (child_stdin, child_stdout_and_stderr).
The [1] gets the child_stdout_and_stderr member.

Using the subprocess module:

# Untested!
cmd_h = subprocess.Popen(env['SYSCMDLINE'], stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, shell=True).stdout

Explanation:

The command line: env['SYSCMDLINE']

Return stdout: stdout=subprocess.PIPE

stderr should be combined with stdout: stderr=subprocess.STDOUT

Let the shell parse the command line: shell=True

thanks
--

I thought the usage of shell=True is usually discouraged? The
subprocess documentation[0] should be helpful to figure it out.
"""
Warning: Invoking the system shell with shell=True can be a security
hazard if combined with untrusted input. See the warning under
Frequently Used Arguments for details.
"""

[0] http://docs.python.org/2/library/subprocess.html


Ramit


This email is confidentialand subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.
 

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,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top