subprocess 模块能阻止输出,当你不关心标准输出的时候是非常方便的.
原文出处:https://segmentfault.com/a/1190000009176351
输入参数应该是一个字符串,以传递给子进程,如果没有数据的话应该是None.我们先问用户地址,然后用ping请求这个地址.
Return Codes通过subprocess.call的返回值你能够判定命令是否执行成功.
其他参考文章,Python模块subprocess:https://www.cnblogs.com/sunailong/p/5162748.htm
subprocess.call(['df', '-h'])下面的例子把shell设置为True
我们能从Python官方文档里读到应该用subprocess 模块来运行系统命令.subprocess模块允许我们创建子进程,连接他们的输入/输出/错误管道,还有获得返回值。注意,python官方文档里对参数shell=True陈述了一个警告:
以前我一直用os.system()处理一些系统管理任务,因为我认为那是运行linux命令最简单的方式.
from subprocess import Popen, PIPEp1 = Popen(["dmesg"], stdout=PIPE)print p1.communicate()Popen.communicate()
communicate()函数返回一个tuple(标准输出和错误).
注意,虽然你可以使用 "shell=True",但并不推荐这样的方式.
我们来做一些真实的例子,subprocess.Popen需要一个数组作为参数:
Invoking the system shell with shell=True can be a security hazard if combined
如果你知道你只用几个有限的函数,比如Popen和PIPE,你可以单单指定这几个函数:
现在,我们来看看输入与输出
# Import the moduleimport subprocess# Ask the user for inputhost = raw_input("Enter a host to ping: ") # Set up the echo command and direct the output to a pipep1 = subprocess.Popen(['ping', '-c 2', host], stdout=subprocess.PIPE)# Run the commandoutput = p1.communicate()[0] print output
Popen.communicate() 和进程沟通:发送数据到标准输入.从标准输出和错误读取数据直到遇到结束符.等待进程结束.
注意,参数shell默认为False
subprocess.Popen()
subprocess 模块中基本的进程创建和管理由Popen 类来处理.
我们可以用数组作为参数运行命令,也可以用字符串作为参数运行命令(通过设置参数shell=True)
subprocess.call()
执行由参数提供的命令.
基本上,当你用 communicate()函数的时候意味着你要执行命令了.
我在使用subprocess 时,有一个微妙的部分是怎么使用管道把命令连接起来.
默认的设置为None,意味着没有重定向发生
免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。
Copyright © 2009-2022 56dr.com. All Rights Reserved. 特网科技 特网云 版权所有 特网科技 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 百度云 中国互联网举报中心 增值电信业务经营许可证B2
建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站