यहाँ मेरा सरल उदाहरण है:
import subprocess
cmd = "ping something.local -c 1"
tail = "tail -n 3"
ping = subprocess.Popen(cmd.split(" "), stdout=subprocess.PIPE)
tail = subprocess.Popen(tail.split(" "), stdin=ping.stdout, stdout=subprocess.PIPE)
ping.stdout.close()
out, err = tail.communicate()
print "Print values:"
print out
print err
और यहाँ स्क्रिप्ट का आउटपुट उदाहरण है:
[~/python]$ python ping_stats.py
ping: cannot resolve tpeo.local: Unknown host
Print values:
None
तो, मेरे चर out
तथा err
"खाली" हैं, लेकिन मुझे इसकी आवश्यकता है ping: cannot resolve tpeo.local: Unknown host
त्रुटि संदेश। मैं इसे कैसे प्राप्त कर सकता हूं?
उत्तर:
जवाब के लिए 0 № 1बस के माध्यम से परिणाम में मानक त्रुटि पर कब्जा stderr=subprocess.STDOUT
.
इसका भी प्रयोग करें shlex. भाजित बजाय string.split(" ")
:
import subprocess
import shlex
cmd = "ping something.local -c 1"
ping = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
out = ping.communicate()[0]
या:
import subprocess
import shlex
cmd = "ping unknown -c 1"
ping = subprocess.Popen(shlex.split(cmd), stderr=subprocess.PIPE,
stdout=subprocess.PIPE)
out, err = ping.communicate()
print out
print err