Suppressing Output In Python Subprocess Call
For the following command: subprocess.call(shlex.split( '''/usr/local/itms/bin/iTMSTransporter -m lookupMetadata -apple_id %s -destination %s'''%(self.ap
Solution 1:
You can use the stdout=
and stderr=
parameters to subprocess.call()
to direct stdout
or stderr
to a file descriptor of your choice. So maybe something like this:
import os
devnull = open(os.devnull, 'w')
subprocess.call(shlex.split(
'/usr/local/itms/bin/iTMSTransporter -m lookupMetadata ''-apple_id %s -destination %s' % (self,apple_id, self.destination)),
stdout=devnull, stderr=devnull)
Using subprocess.PIPE
, if you're not reading from the pipe, could cause your program to block if it generates a lot of output.
Update
As @yanlend mentions in a comment, newer (3.x) versions of Python include subprocess.DEVNULL
to solve this problem in a more convenient and portable fashion. In that case, the code would look like:
subprocess.call(shlex.split(
'/usr/local/itms/bin/iTMSTransporter -m lookupMetadata ''-apple_id %s -destination %s' % (self,apple_id, self.destination)),
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
Solution 2:
What worked for me is appending 2>/dev/null
at the end of the command.
Post a Comment for "Suppressing Output In Python Subprocess Call"