前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 调用cmd,不显示cmd黑

python 调用cmd,不显示cmd黑

作者头像
py3study
发布2020-01-08 16:18:13
3.8K0
发布2020-01-08 16:18:13
举报
文章被收录于专栏:python3python3

python 调用系统命令的方式有很多

1.1   os.system(command)

       在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态。这实际上是使用C标准库函数system()实现的。这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。

1.2   os.popen(command,mode)

      打开一个与command进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是’r')。如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。

1.3   commands.getstatusoutput(command)

  使用os.popen()函数执行command命令并返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。

2.1   subprocess.call(["some_command","some_argument","another_argument_or_path"])

        subprocess.call(command,shell=True)

2.2   subprocess.Popen(command, shell=True)

       如果command不是一个可执行文件,shell=True不可省。

       使用subprocess模块可以创建新的进程,可以与新建进程的输入/输出/错误管道连通,并可以获得新建进程执行的返回状态。使用subprocess模块的目的是替代os.system()、os.popen*()、commands.*等旧的函数或模块。

  最简单的方法是使用class subprocess.Popen(command,shell=True)。Popen类有Popen.stdin,Popen.stdout,Popen.stderr三个有用的属性,可以实现与子进程的通信。

使用os.system和subprocess.call的时候都会有一闪而过的cmd黑框,让人很不爽,使用os.popen后台执行,也可以,能够返回执行的信息

使用subprocess.Popen这个方法很方便,返回tuple类型,对于结果也有好处理的方式

host = ‘192.168.200.64’

ret = subprocess.Popen("ping -n 1 -w 1 %s " % host, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

print(ret)

print(ret.communicate())

<subprocess.Popen object at 0x0000000002857CC0>

(b'\r\n\xd5\xfd\xd4\xda Ping 192.168.50.31 \xbe\xdf\xd3\xd0 32 \xd7\xd6\xbd\xda\xb5\xc4\xca\xfd\xbe\xdd:\r\n\xc7\xeb\xc7\xf3\xb3\xac\xca\xb1\xa1\xa3\r\n\r\n192.168.50.31 \xb5\xc4 Ping \xcd\xb3\xbc\xc6\xd0\xc5\xcf\xa2:\r\n    \xca\xfd\xbe\xdd\xb0\xfc: \xd2\xd1\xb7\xa2\xcb\xcd = 1\xa3\xac\xd2\xd1\xbd\xd3\xca\xd5 = 0\xa3\xac\xb6\xaa\xca\xa7 = 1 (100% \xb6\xaa\xca\xa7)\xa3\xac\r\n', b'')

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档