python3 subprocess.check_output的使用

demo


import shlex, subprocess
command_line = "echo 'hello' "
args = shlex.split(command_line)
print(args)
try:
    p = subprocess.check_output(args,stderr=subprocess.STDOUT,timeout=5)
    print(p)
except subprocess.TimeoutExpired as time_e:
    print(time_e)
except subprocess.CalledProcessError as call_e:
    print(e.output.decode(encoding="utf-8"))

注意点

1.timeout参数不能和shell=True一起使用,不然就算是时间到了,还是会继续执行,等执行结束以后才会抛出subprocess.TimeoutExpired异常,timeout的单位是秒。

2.check_output返回的是子程序的执行结果(上述demo返回的就应该是helo),也是unicode编码,如果程序执行报错的话,会直接抛出异常CalledProcessError,并且异常当中会有output属性,该属性为unicode编码的,要当字符串使用的时候需要转码,如e.output.decode(encoding="utf-8")

3.想要执行的命令command_line不能有类似<的重定向符号,会报错。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 8,221评论 0 10
  • 字符集和编码简介 在编程中常常可以见到各种字符集和编码,包括ASCII,MBCS,Unicode等字符集。确切的说...
    兰山小亭阅读 12,806评论 0 13
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,132评论 0 10
  • 今天是大年初三,他今天要来我家,现在的我在车站等着他,但是他却堵车了。 看着车站人来人往,每个人都大包小包的,...
    秋日私语安阅读 819评论 0 1
  • 看到舍友在看最新出的《魔法少女小樱》,记得小时候是在那个星空频道上看的,具体情节早就记不清了。但小樱的可爱和...
    mumuchen阅读 3,247评论 0 0