Python中执行命令操作地相关模块调用

        在日常使用中,我们常常需要对一些固定命令进行相关操作。在网络通信中,常常需要我们通过自己的计算机远程获取服务器的相关参数,以最大程度地提高工作效率,在此涉及到两个简单地问题,一个是网络通信,另一个则是执行命令操作的使用。

       常规地,我们使用os模块中的popen()函数进行打开操作,但是运用此模块时,常出现以下 问题,如果输入的操作不是命令则会报错,出现以下问题。这些输出信息则是没办法进行解码和编码的,并且也是无法进行显示的。

import os
r=os.popen('1111')
print(r.read())


'1111' �����ڲ����ⲿ���Ҳ���ǿ����еij���
���������ļ���

       为解决此问题,我们在此引入一个新的模块,subprocess模块,其调用方法与os模块类似,打开函数也是基本一致的为Popen()函数,这里是一首字母P大写的Popen。该函数的具体调用形式如下:

subprocess.Popen('命令', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

      该函数具有两个返回值,当输入为一个命令时,则返回stdout,当不是命令时,则返回stderr,具体函数如下所示。

import subprocess
msg_r='1111'
msg_rr = subprocess.Popen(msg_r, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
std_out = msg_rr.stdout.read()
std_err = msg_rr.stderr.read()
if not std_err:
    print(std_out.decode('gbk'))
else:
    print(std_err.decode('gbk'))

输出结果为:
'1111' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

       通过引入新函数,就算输入不是命令是会返回一个较为的有效可读的结果。在此需要注意的是,windows的默认编码均为gbk编码格式,所以最后的解码格式都是以gbk的形式进行解码。

     小伙伴们快去试试吧~~~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值