ore*_*ani 1 python bash stderr
我试图管道以下命令的输出,/dev/null以便它不会为运行该程序的用户打印.
import os
os.system("ping -c 1 192.168.unknown.host > /dev/null")
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
ping: unknown host 192.168.unknown.host
Run Code Online (Sandbox Code Playgroud)
问题是这个消息是由其他东西产生的stdout,可能stderr我可以很容易地将它重定向到/dev/null使用
ping -c 1 192.168.unknown.host >& /dev/null
Run Code Online (Sandbox Code Playgroud)
但是,当我在python中使用它时,我收到以下错误:
sh: 1: Syntax error: Bad fd number
Run Code Online (Sandbox Code Playgroud)
有可能解决这个问题吗?(我只是不希望打印这条消息).
import subprocess
subprocess.Popen(
['ping', "-c", "192.168.unknown.host"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
Run Code Online (Sandbox Code Playgroud)
正如Ashwini Chaudhary所指出的,对于3.3以下的Python,您必须手动打开os.devnull:
import os
import subprocess
with open(os.devnull, 'w') as DEVNULL:
subprocess.Popen(
['ping', "-c", "192.168.unknown.host"],
stdout=DEVNULL,
stderr=DEVNULL,
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2802 次 |
| 最近记录: |