一起学Python-教你如何在Windows下实现Python脚本输出重定向( /dev/null)并判断命令执行结果

15 篇文章 0 订阅
9 篇文章 0 订阅

前言:

在我们编写脚本的时候,难免会遇到一些需求,就是有时候为了更好的数据展现,我们需要对一些错误的信息进行屏蔽(建议已日志文件的记录进行保存),从而实现脚本的美观及更好的可读性,下面介绍一下分别在Shell脚本及Python脚本中如何去实现这个功能。

1、场景模拟

比如说,下面这个场景:此时多出来的访问结果非常的影响阅读,而且在这个场景下也完全不需要关心返回的内容是啥,只需要知道执行的结果是成功还是失败,也就是不问过程,只问结果(有没有感觉像你的公司理念呀)。
在这里插入图片描述
BB那么多,如何实现呢?下面开始

1、Shell脚本案例

具体请参考这篇:Shell脚本实用小技巧-教你屏蔽执行命令的所有显示信息,包含错误信息

2、Python脚本实现黑洞

想要实现这个需求,需要两个模块,分别是:subprocess、os,但是目前我只能实现对正确的命令执行返回信息输出进行屏蔽,无法实现对错误信息进行屏蔽(希望有大佬知道的可以指点一下,不胜感激)

2.1、正常模式

首先我们来看正常情况下是怎样的,代码如下:

import os
cmd = 'ipconfig'
os.system(cmd)
print('命令[ %s ]执行结束' %cmd)

执行结果:
在这里插入图片描述

2.2、黑洞模式

import os
import subprocess
dev_Null = open(os.devnull,'w')
cmd = 'ipconfig'
p = subprocess.Popen(cmd, stdout=dev_Null)
if os.system('echo %errorlevel%') == 0:
    print('命令[ %s ]执行成功' %cmd)
else:
    print('命令[ %s ]执行失败' %cmd)

执行效果:
在这里插入图片描述

3、实际应用

然后回到最初的场景设计,套上黑洞模式,得出的效果如下:

直接复制代码可能会出现语法错误喔(在vscode会出现这种情况)

import os
import time
import telnetlib
import subprocess
def curls(frequency, port, host, timeout):
    frequency = frequency + 1
    for s in range(1,frequency):
        dev_Null = open(os.devnull,'w')
        cm = 'curl ' + 'http://' + host
        p = subprocess.Popen(cm, stdout=dev_Null)
        if os.system('echo %errorlevel%') == 0:
            print("第[ %s ]次测试成功" %s)
        else:
            print("第[ %s ]次测试失败" %s)
        time.sleep(1)
up = time.time()
print("开始时间:", up)
curls(frequency=10, port=80, host='baidu.com', timeout=3)
en = time.time()
print("结束时间:", en)
xc = en - up
print("耗时:",xc)

执行效果:

PS D:\代码\python> & "D:/Program Files/Python39/python.exe" d://python/if/cmd_status.py
开始时间: 1605192080.006111
0
第[ 1 ]次测试成功
0
第[ 2 ]次测试成功
0
第[ 3 ]次测试成功
0
第[ 4 ]次测试成功
curl: (52) Empty reply from server
0
第[ 5 ]次测试成功
0
第[ 6 ]次测试成功
0
第[ 7 ]次测试成功
0
第[ 8 ]次测试成功
curl: (52) Empty reply from server
0
第[ 9 ]次测试成功
0
第[ 10 ]次测试成功
结束时间: 1605192090.442981
耗时: 10.436870098114014```
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坐公交也用券

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值