[Python] - subprocess issue


 
Thread Tools Search this Thread
Top Forums Programming [Python] - subprocess issue
# 1  
Old 09-18-2019
[Python] - subprocess issue

So I have this basic script, see below

Code:
import subprocess
import shlex

command = "gcloud projects list"

subprocess.check_output(shlex.split(command))
subprocess.check_call(shlex.split(command))

The subprocess.check_call(shlex.split(command)) actually return what I expect. It returns the result of gcloud projects list. However subprocess.check_output doesn't, in fact it returns nothing.

Can explain this?

Last edited by Neo; 09-19-2019 at 12:56 AM.. Reason: Added icode tags to discussion
# 2  
Old 09-18-2019
My understanding is the operation of the two are different:

Documentation -
Quote:
check_call() returns as soon as /bin/sh process exits, it does not wait for child processes to complete

check_output() waits until all output is read. When (and if) check_output inherits the stdin pipe then check_output() will wait until it exits, i.e., until the child process the inherited pipe. In other words it waits for the child process to end.
Try getting get rid of the shlex,
Code:
subprocess.check_output( [ "command" "parameter_1" ])

# 3  
Old 09-18-2019
It is also possible that the command that you are running is sending the output to stderr instead of stdout

Try this instead:-

Code:
subprocess.check_output(shlex.split(command), stderr=subprocess.STDOUT)

# 4  
Old 09-18-2019
Quote:
Originally Posted by jim mcnamara
My understanding is the operation of the two are different:

Documentation -


Try getting get rid of the shlex,
Code:
subprocess.check_output( [ "command" "parameter_1" ])

That's not going to work. I need the shlex and even if I didn't have it, it still wouldn't work.
# 5  
Old 09-18-2019
Quote:
Originally Posted by Yoda
It is also possible that the command that you are running is sending the output to stderr instead of stdout

Try this instead:-

Code:
subprocess.check_output(shlex.split(command), stderr=subprocess.STDOUT)

That doesn't work etiher. Also the exact same command works with subprocess.check_call. What's weird is the subprocess.check_output works in the python shell but not from the python script.
# 6  
Old 09-18-2019
To see the output from program, you have to print the output. I believe stdout is used internally for this function:-

Code:
print subprocess.check_output(shlex.split(command))

This User Gave Thanks to Yoda For This Post:
# 7  
Old 09-18-2019
Quote:
Originally Posted by Yoda
To see the output from program, you have to print the output. I believe stdout is used internally for this function:-

Code:
print subprocess.check_output(shlex.split(command))

That does work. Why does it work from the python shell without print?

Also I looked at 17.1. subprocess — Subprocess management — Python 2.7.16 documentation and it doesn't mention anything about having to do a print.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Issue Spliting String in Python

I have a string like below Note: I have have a single to any number of comma "," seperated string assigned to jdbc_trgt variable. I need to split jdbc_trgt using comma(,) as the delimiter. I tried the below but it fails as i dont know how can i read each split string iterately. for... (4 Replies)
Discussion started by: mohtashims
4 Replies

2. Programming

Python[Issue in converting .py to .exe using py2exe

Hi Experts, Good morning. I am trying to convert my hello.py to hello .exe file. I followed the steps as mentioned in the documentation but getting errors in the end. Please help. What I did as below-- Created hello.py file print ("Hello world!") raw_input('') Then... (0 Replies)
Discussion started by: shekhar_4_u
0 Replies

3. Shell Programming and Scripting

Python Thread Execution Issue . . .

Greetings! I set up a basic threading specimen which does the job:#!/usr/bin/python import threading class a(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): print("thread a finished") class b(threading.Thread): ... (0 Replies)
Discussion started by: LinQ
0 Replies

4. Shell Programming and Scripting

Python subprocess

Hi guys, I'm learning python and perl and i was trying to run from python a perl script using the subprocess module. I have an issue that i don't understand regarding this. I run this code: #!/usr/bin/python import subprocess p2 = subprocess.Popen(,stdout=subprocess.PIPE) output2 =... (2 Replies)
Discussion started by: capitanui
2 Replies

5. Shell Programming and Scripting

Xterm using python subprocess

Hi, I am trying to run a shell script using subprocess in python. I can run simple script with arguments using subprocess.But I am not able to embed xterm in subrocess command. #!/usr/bin/python import subprocess subprocess.call() Above code gives me error. Please help me in... (2 Replies)
Discussion started by: diehard
2 Replies

6. Shell Programming and Scripting

Python subprocess module

I need to run this command using python subprocess module (notice I'm using only variables): cmd = TESTPATH + ' -s ' + serviceName + ' -r ' + rdir + \ ' -m ' + masterAcct + ' -p ' + persona + ' -P ' + passwd (3 Replies)
Discussion started by: erick_tuk
3 Replies

7. Shell Programming and Scripting

python: what's wrong with my subprocess.Popen

my script is #!/usr/bin/env python import datetime import subprocess import sys import os import signal from time import sleep def runForAWhile(cmd, secs=10): print("running %s" % cmd) timeout = datetime.timedelta(seconds=secs) print timeout proc = subprocess.Popen(cmd,... (0 Replies)
Discussion started by: yanglei_fage
0 Replies

8. AIX

Subprocess errors

Hi Guys, Just a question about subprocesses.. Lately one of our servers has started to throw out the following error: SYSTEM ERROR: Too many subprocesses, cannot fork. Errno=12 We've already increased the threshold twice. Its now up to 8000 and the swap space has also been increased. We... (6 Replies)
Discussion started by: Jazmania
6 Replies

9. Shell Programming and Scripting

Crontab Permissions Issue with Python

I have a cron on a Linux server that isn't executing properly. CRON (with specific info replaced): MAILTO=emailaddress@server.com */2 * * * * python /data/site/cron.py OUTPUT: python: can't open file '/data/site/cron.py ': No such file or directoryAdditional info - The python path is... (3 Replies)
Discussion started by: theHire
3 Replies

10. Shell Programming and Scripting

Doubt about pipes and subprocess

Hi, I am having a trivial doubt. Please see the below pipeline code sequence. command1 | (command 2; commend 3) I am aware that the command that follows pipe will run in the sub shell by the Unix kernel. But how about here? Since these set of commands are grouped under "parantheses", will... (6 Replies)
Discussion started by: royalibrahim
6 Replies
Login or Register to Ask a Question