【发布时间】:2014-12-03 13:51:50
【问题描述】:
我正在尝试将以下命令的输出通过管道传输到 /dev/null,这样它就不会为运行程序的用户打印出来。
import os
os.system("ping -c 1 192.168.unknown.host > /dev/null")
但我得到了错误:
ping: unknown host 192.168.unknown.host
问题是这条消息是由stdout以外的东西产生的,可能是stderr,我可以很容易地将它重定向到/dev/null使用
ping -c 1 192.168.unknown.host >& /dev/null
但是,当我在 python 中使用它时,我收到以下错误:
sh: 1: Syntax error: Bad fd number
有可能解决这个问题吗? (我只是不想打印该消息)。
【问题讨论】:
-
&>而不是>&。或者这只是一个错字?这仅适用于 bash 4,IIRC。否则使用> /dev/null 2>&1。 -
这不是一种类型,该命令在 shell 中有效,但在 python 中无效(无论哪种情况);但你的建议效果很好。
-
os.system正在使用不支持>&重定向的/bin/sh。在 shell 中尝试/bin/sh -c '<your command>',它也会失败。 -
它在终端中工作,但python返回那个奇怪的错误。