静音输出subprocess.popen
Silence output subprocess.popen
首先,请原谅我的错误,我不是英语。
我正在编写 Python3 代码。
我想停止 subprocess.popen.
的输出
def get_interface_ip(interface):
devnull = open(os.devnull, 'wb')
output = subprocess.Popen(['ifconfig', interface], stdout=subprocess.PIPE).communicate()[0]
ip_lan_value = re.findall('192.168.([0-9]*).[0-9]* ', str(output))[0]
return (ip_lan_value)
def get_lan_ip():
iplan = socket.gethostbyname(socket.gethostname())
if iplan.startswith("127."):
interfaces = [
"eth0",
"eth1",
"eth2",
"wlan0",
"wlan1",
"wifi0",
"ath0",
"ath1",
"ppp0",
]
for interface in interfaces:
try:
iplan = get_interface_ip(interface)
break
except IOError:
pass
except IndexError:
pass
return iplan
但它打印:
eth1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
eth2: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
eth1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
eth2: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
也就是说:"Interface not found"(我只激活了eth0和wlan0)
我尝试使用 stdout=open(os.devnull, 'wb') 但它打印:
eth1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
eth2: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
wlan1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
wifi0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
ath0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
ath1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
ppp0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
eth1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
eth2: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
wlan1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
wifi0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
ath0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
ath1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
ppp0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
程序无法运行。
错误消息可能打印在 stderr 上。要使其静音,请使用 stderr=subprocess.DEVNULL
.
我遇到过管道 stdout/stderr 不起作用的情况,在这种情况下,您可以尝试使用 hack,例如让 shell 处理输出(仅 Linux 的示例,Windows 可能工作类似):
subprocess.Popen(['ifconfig', interface, '2>/dev/null'], stdout=subprocess.PIPE, shell=True)
首先,请原谅我的错误,我不是英语。 我正在编写 Python3 代码。 我想停止 subprocess.popen.
的输出def get_interface_ip(interface):
devnull = open(os.devnull, 'wb')
output = subprocess.Popen(['ifconfig', interface], stdout=subprocess.PIPE).communicate()[0]
ip_lan_value = re.findall('192.168.([0-9]*).[0-9]* ', str(output))[0]
return (ip_lan_value)
def get_lan_ip():
iplan = socket.gethostbyname(socket.gethostname())
if iplan.startswith("127."):
interfaces = [
"eth0",
"eth1",
"eth2",
"wlan0",
"wlan1",
"wifi0",
"ath0",
"ath1",
"ppp0",
]
for interface in interfaces:
try:
iplan = get_interface_ip(interface)
break
except IOError:
pass
except IndexError:
pass
return iplan
但它打印:
eth1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato eth2: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato eth1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato eth2: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
也就是说:"Interface not found"(我只激活了eth0和wlan0)
我尝试使用 stdout=open(os.devnull, 'wb') 但它打印:
eth1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato eth2: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato wlan1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato wifi0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato ath0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato ath1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato ppp0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato eth1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato eth2: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato wlan1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato wifi0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato ath0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato ath1: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato ppp0: errore nel recuperare le informazioni dell'interfaccia: Dispositivo non trovato
程序无法运行。
错误消息可能打印在 stderr 上。要使其静音,请使用 stderr=subprocess.DEVNULL
.
我遇到过管道 stdout/stderr 不起作用的情况,在这种情况下,您可以尝试使用 hack,例如让 shell 处理输出(仅 Linux 的示例,Windows 可能工作类似):
subprocess.Popen(['ifconfig', interface, '2>/dev/null'], stdout=subprocess.PIPE, shell=True)