当前位置: 首页 > news >正文

【python中调用shell命令使用PIPE】使用PIPE作为stdout出现假卡死的情况——将stdout重定向为输出到临时文件...

在Python中,调用:subprocess.Popen(cmd, stdout = PIPE, stderr = PIPE, shell= true)的时候,如果调用的shell命令本身在执行之后会突然出现很多输出,则这个时候可能会导致hang在那里,表现就是卡死了,程序也不往下走,也不会报错。。。

 

原因就是:

PIPE本身可容纳的量比较小,所以程序会卡死,所以一大堆内容输出过来的时候,会导致PIPE不足够处理这些内容,因此需要将输出内容定位到其他地方,例如临时文件等,所以.需要将subprocess.Popen()的内容重定向到文件才可以,具体提到了这块的网址内容有下:

http://blog.csdn.net/losemyheaven/article/details/48159855

https://www.topjishu.com/4705.html

 

其中有一段是说要这样处理:

——————————————————————————————》

解决方法是不用subprocess提供的PIPE,而是使用自己创建的流。如此,可以控制流的大小。不多说,直接

上代码:

import subprocess

import traceback

import tempfile

try:

    cmd = "ls -lh"

    out_temp = tempfile.SpooledTemporaryFile(bufsize=10*1000)

    fileno = out_temp.fileno()

    obj = subprocess.Popen(cmd,stdout=fileno,stderr=fileno,shell=True)

    obj.wait()

    

    out_temp.seek(0)

    lines = out_temp.readlines()

    

    

    print lines

except Exception, e:

    print traceback.format_exc()

finally:

    if out_temp:

        out_temp.close()

 

转载于:https://www.cnblogs.com/keke-xiaoxiami/p/7875009.html

相关文章:

  • MDCC印象之一:移动时代来临
  • Python3 面向对象(1)
  • 关于采用业务用例视图来展示、归纳、整理业务用例的三点指导原则
  • 完成登录功能,用session记住用户名
  • 英语(1)——8种时态
  • javaweb入门(使用SQLserver2008 R2数据库)
  • 杯具的rm 99*
  • grant 权限 on 数据库对象 to 用户
  • 建立类似复合主键的唯一约束, 建立前查找违反多列唯一约束的记录
  • centos 7.2部署cloudstack4.9 ceph0.94
  • FireFox 7/8 上传前预览图片
  • sqoop: mysql to hive
  • 六、CentOS 6.5 下Nginx的配置
  • JS判断浏览器类型及版本
  • 【框架学习与探究之依赖注入--Autofac】
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Bootstrap JS插件Alert源码分析
  • Computed property XXX was assigned to but it has no setter
  • js数组之filter
  • linux学习笔记
  • Netty 4.1 源代码学习:线程模型
  • Spring Boot快速入门(一):Hello Spring Boot
  • 从重复到重用
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 高程读书笔记 第六章 面向对象程序设计
  • 理解在java “”i=i++;”所发生的事情
  • 以太坊客户端Geth命令参数详解
  • 白色的风信子
  • zabbix3.2监控linux磁盘IO
  • 阿里云ACE认证学习知识点梳理
  • ​ArcGIS Pro 如何批量删除字段
  • ​Linux·i2c驱动架构​
  • ​批处理文件中的errorlevel用法
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (C++17) std算法之执行策略 execution
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (八十八)VFL语言初步 - 实现布局
  • (分布式缓存)Redis哨兵
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (译)2019年前端性能优化清单 — 下篇
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Google的Objective-C编码规范
  • (转载)虚函数剖析
  • .NET 8.0 发布到 IIS
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net 获取url的方法
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • @拔赤:Web前端开发十日谈
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [CISCN 2019华东南]Web11