This question already has an answer here:
For the following command:
subprocess.call(shlex.split(
"""/usr/local/itms/bin/iTMSTransporter -m lookupMetadata
-apple_id %s -destination %s"""%(self.apple_id, self.destination))
It prints the entire output into the Terminal window. How would I suppress ALL output here? I tried doing subprocess.call(shlex.split(<command> > /dev/null 2&1
)), but it didn't produce the required results. How would I do this here?
What worked for me is appending
2>/dev/null
at the end of the command.You can use the
stdout=
andstderr=
parameters tosubprocess.call()
to directstdout
orstderr
to a file descriptor of your choice. So maybe something like this: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: