/ / पायथन के साथ पिंग त्रुटि कैसे पकड़ें? - अजगर, पिंग

पायथन के साथ पिंग त्रुटि कैसे पकड़ें? - अजगर, पिंग

यहाँ मेरा सरल उदाहरण है:

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