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

Python使用subprocess模块执行shell命令且自动退出命令

exec_command()函数不能实现在1秒后自动退出。要实现这个功能,您需要使用subprocess模块的另一个函数——timeout。下面是一个示例:

import subprocess
import sysarg_1 = sys.argv[1]
arg_2 = sys.argv[2]
arg_3 = sys.argv[3]def exec_command(command, dir, timeout):try:process = subprocess.Popen(command, shell=True, cwd=dir,stdout=subprocess.PIPE, stderr=subprocess.PIPE)stdout, stderr = process.communicate(timeout=timeout)return stdout.decode("utf-8"),stderr.decode("utf-8")except subprocess.TimeoutExpired:process.kill()stdout, stderr = process.communicate()return stdout.decode("utf-8"),stderr.decode("utf-8")# 示例用法
output = exec_command(arg_1, arg_2, timeout=int(arg_3))
print(output)

在这个例子中,exec_command()函数使用subprocess.Popen()执行命令,并通过stdoutstderr捕获输出结果。然后,使用communicate(timeout=timeout)函数设置超时时间为1秒,如果在1秒内命令没有完成,就会引发TimeoutExpired异常。在异常处理中,使用process.kill()终止进程,然后通过communicate()获取输出结果。

请注意,使用此方法执行命令需要Python 3.3及更高版本。如果您使用的是Python 3.2或更早的版本,您需要使用subprocess.check_output()函数来替代subprocess.Popen()communicate()函数的使用。

相关文章:

  • x-cmd pkg | procs - ps 命令的现代化替代品
  • API 开放平台项目(已整理,已废弃)
  • uniapp获取日期
  • Vue中的双向数据绑定是如何实现的
  • 监控各大电商平台商品价格,库存信息,数据分析,京东SKU详情
  • redis服务迁移数据工具--RDM
  • 在vue3中使用Cesium保姆篇
  • 贪心算法day05
  • Docker学习笔记(一):Docker命令总结
  • Linux驱动开发笔记(六):用户层与内核层进行数据传递的原理和Demo
  • C语言之分支与循环【附6个练习】
  • Spark内核解析-数据存储5(六)
  • css制作瀑布流布局
  • 商品小程序(6.商品详情)
  • QT的信号与槽
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • iOS | NSProxy
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java基本数据类型之Number
  • JS 面试题总结
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • nginx 配置多 域名 + 多 https
  • Otto开发初探——微服务依赖管理新利器
  • vue-router 实现分析
  • 坑!为什么View.startAnimation不起作用?
  • 浅谈Golang中select的用法
  • 强力优化Rancher k8s中国区的使用体验
  • 协程
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一些css基础学习笔记
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 自定义函数
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​一些不规范的GTID使用场景
  • # Apache SeaTunnel 究竟是什么?
  • ###STL(标准模板库)
  • #pragma预处理命令
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .apk文件,IIS不支持下载解决
  • .chm格式文件如何阅读
  • .naturalWidth 和naturalHeight属性,
  • .net core 依赖注入的基本用发
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET 表达式计算:Expression Evaluator
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net快速开发框架源码分享
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • @FeignClient注解,fallback和fallbackFactory
  • [ 蓝桥杯Web真题 ]-布局切换
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [Assignment] C++1