subprocess.Popen()函数

语法格式:

  subprocess.Popen(arg,stdin=None,stdout=None,stderr=None,shell=False)

1、主要来讲讲shell=True/False的区别

我们一般常用的格式:subprocess.Popen("cat test.txt", shell=True)
它相当于
subprocess.Popen(["/bin/sh", "-c", "cat test.txt"])
在unix下,当shell=False(默认)时,Popen使用os.execvp()来执行子程序。args一般要是一个【列表】。如果args是个字符串的
话,会被当做是可执行文件的路径,这样就不能传入任何参数了。

在unix下,当shell=True时,如果arg是个字符串,就使用shell来解释执行这个字符串。如果args是个列表,则第一项被视为命令,
其余的都视为是给shell本身的参数。也就是说,等效于:
subprocess.Popen(['/bin/sh', '-c', args[0], args[1], ...])

2、返回状态码问题

有两种方法:

第一个:

popen = subprocess.Popen('ls /usr/bin', stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)

print("out:",str(popen.stdout.read(),encoding='utf-8'))
popen.poll()
print(popen.returncode)

popen.poll()函数表示检查子进程是否已结束,设置并返回状态值,用默认的即可。returncode负责返回真正的结果,如果执行成功,返回值为0,否则为其他任意状态码都表示执行失败。

第二个:

returnstatuscode函数:

exitcode_curl,output_curl = subprocess.getstatusoutput(cmd_curl)
print("code1:%d\noutput1:%s" %(exitcode_curl,output_curl),file=doc)

上面的两种方法都可以实现在Linux、windows平台执行命令,并且获取命令的状态返回值。

最新文章

  1. 【转】《从入门到精通云服务器》第七讲—IAAS、PAAS、SAAS
  2. tzwhere模块 根据经纬度判断时区
  3. 【leetcode】Binary Tree Maximum Path Sum (medium)
  4. ORM原型概念
  5. Jedis 连接redis超时
  6. HDU Traffic Real Time Query System
  7. C++ 11 笔记 (四) : std::bind
  8. NIR相机
  9. java_Collection 类集
  10. ExtJs3常用控件操作实例
  11. hdu 1546 Idiomatic Phrases Game
  12. iOS进阶推荐的书目
  13. 浅析Content Negotation在Nancy的实现和使用
  14. linux下mount/unmount命令
  15. 搭建IIS并配置网站之旅
  16. CSRF攻击原理及防御
  17. MT【267】第一次很重要
  18. Proxy代理模式
  19. python程序打包成.exe
  20. jni4net使用小结

热门文章

  1. Nexus上传npm包
  2. [LeetCode] 334. Increasing Triplet Subsequence 递增三元子序列
  3. 【SSH进阶之路】Hibernate系列——总结篇(九)
  4. Ubuntu16.0.4安装OpenCV3.4.2
  5. DDD/CQRS模式,微服务,容器
  6. Idea打jar包(包含依赖的jar)
  7. webbench网站测压工具源码分析
  8. js中Function引用类型中一些常见且有用的方法和属性
  9. C++ Primer中文第四版
  10. vue中引入百度地图