python之执行shell命令
python 执行shell命令,且执行完后将shell端的输出返回
subprocess
import subprocess
# 要执行的命令
command = "ls -lrt"
# 执行命令
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 等待命令执行完成
process.wait()
# 获取命令的输出和错误信息
output = process.stdout.read()
error = process.stderr.read()
# 将输出和错误信息解码为字符串
output = output.decode(encoding="gbk")
error = error.decode(encoding="gbk")
# 返回命令的输出和错误信息
result = {"output": output, "error": error}
print(result)
在这段代码中,我们使用 subprocess.run() 方法执行了 ls -l 命令,并将结果保存在 output 变量中。然后,我们调用了 stdout.decode() 方法将输出解码为字符串,并打印结果。
注意,在调用 subprocess.run() 时,我们传入了两个参数:shell=True 和 stdout=subprocess.PIPE。shell=True 表示要使用 shell 来执行命令,而 stdout=subprocess.PIPE 则表示将命令的标准输出保存在 output.stdout 中。
process.wait()
process.wait() 方法用来等待一个子进程执行完毕。它会阻塞当前线程,直到子进程结束。
例如,如果我们使用如下代码来启动一个子进程:
import subprocess
# 启动一个子进程,执行命令 'sleep 5'
process = subprocess.Popen(['sleep', '5'])
# 等待子进程执行完毕
process.wait()
在这个例子中,我们启动了一个子进程,并让它执行 'sleep 5' 命令。这个命令会让子进程挂起 5 秒钟。接着,我们使用 process.wait() 方法等待子进程执行完毕。这个方法会阻塞当前线程,直到子进程结束,然后才会继续执行后面的代码。
process.communicate(timeout=20)
如果想设置执行超时时间,需要使用
output, error = process.communicate(timeout=20)
这段代码用来启动一个子进程,并与该进程通信。
process.communicate() 方法会在子进程执行完毕后返回两个值:子进程的输出和错误信息。
这段代码中的 timeout 参数指定了最长等待时间,单位是秒。如果在规定时间内子进程还未执行完毕,那么将会抛出一个 TimeoutExpired 异常。
例如,如果我们使用如下代码来执行一个子进程:
import subprocess
# 启动一个子进程,执行命令 'sleep 5'
process = subprocess.Popen(['sleep', '5'])
# 等待子进程执行完毕,最长等待时间为 20 秒
try:
output, error = process.communicate(timeout=20)
except subprocess.TimeoutExpired:
print('TimeoutExpired')
os.system()
import os
# 要执行的命令
command = "ls -l"
# 执行命令
output = os.system(command)
# 输出结果
print(output)
os.system() 方法执行了 ls -l 命令,并将结果保存在 output 变量中。然后,我们打印了 output 的值。
虽然使用 os.system() 方法可以执行 shell 命令,但它没有 subprocess.run() 方法那么强大。例如,os.system() 方法无法将命令的标准输出保存在变量中,因此无法对输出进行进一步的处理。
因此,如果您需要对命令的输出进行进一步的处理,建议使用 subprocess 模块。如果只需要执行命令,则可以使用 os.system() 方法。
sh
# 安装sh库
!pip install sh
from sh import ls
# 执行ls -l命令
output = ls("-l")
# 输出结果
print(output)
pexpect
# 安装pexpect库
!pip install pexpect
import pexpect
# 要执行的命令
command = "ls -l"
# 执行命令
output = pexpect.run(command)
# 输出结果
print(output)
如果要从性能的角度考虑,推荐使用 subprocess 模块来执行 shell 命令。相比于其他方法,subprocess 模块能够更快地执行命令,并且可以将命令的标准输出保存在变量中,方便进一步的处理。
python之执行shell命令的更多相关文章
- python中执行shell命令的几个方法小结(转载)
转载:http://www.jb51.net/article/55327.htm python中执行shell命令的几个方法小结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014- ...
- python中执行shell命令的几个方法小结
原文 http://www.jb51.net/article/55327.htm 最近有个需求就是页面上执行shell命令,第一想到的就是os.system, os.system('cat /proc ...
- C++/Php/Python 语言执行shell命令
编程中经常需要在程序中使用shell命令来简化程序,这里记录一下. 1. C++ 执行shell命令 #include <iostream> #include <string> ...
- python中执行shell命令行read结果
+++++++++++++++++++++++++++++ python执行shell命令1 os.system 可以返回运行shell命令状态,同时会在终端输出运行结果 例如 ipython中运行如 ...
- python(6)-执行shell命令
可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen* --废弃 popen2.* --废弃 commands.* ...
- 「Python」6种python中执行shell命令方法
用Python调用Shell命令有如下几种方式: 第一种: os.system("The command you want"). 这个调用相当直接,且是同步进行的,程序需要阻塞并等 ...
- python中执行shell命令的几个方法
1.os.system() a=os.system("df -hT | awk 'NR==3{print $(NF-1)}'") 该命令会在页面上打印输出结果,但变量不会保留结果, ...
- python批量执行shell命令
[root@master ~]# cat a.py #!/usr/bin/python # -*- coding:UTF- -*- import subprocess def fun(): subpr ...
- python中执行shell命令
查看输出结果 import os output = os.popen('cat 6018_gap_5_predict/solusion2/solusion2_0-1.txt | wc -l') pri ...
- python中执行shell的两种方法总结
这篇文章主要介绍了python中执行shell的两种方法,有两种方法可以在Python中执行SHELL程序,方法一是使用Python的commands包,方法二则是使用subprocess包,这两个包 ...
随机推荐
- Win32 动态库dll
这两天学习动态库的练习,分享下方法 实例.封装窗口类的两种状态. 1.自定义窗口类QWnd 2.资源模板窗口对话框类 下面是dll的头文件,类的声明 #pragma once #ifndef _CLA ...
- linux下开发编辑器vim常用指令
1.vim的3种模式:编辑模式.插入模式.命令行模式(最后一行模式) 编辑模式:对代码的修改(复制.粘贴.剪切 插入模式:用户编辑代码等等) 命令行模式:保存 退出 另存为等 vim3种模式的切换 最 ...
- 痞子衡嵌入式:在IAR开发环境下将尽可能多的代码重定向到RAM中执行的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将尽可能多的代码重定向到RAM中执行的方法. 最近和同事在讨论一个客户案例,客户 APP 工程是基于 IAR 开发环境 ...
- TwinCAT3 - 实现自己的Tc2_SerialCom
目录 1,前言 2,原生Tc2_SerialCom简单使用 3,实现自己的Tc2_SerialCom 3.1,EL6inData22B,EL6outData22B 3.2,ComBuffer 3.3, ...
- AI驱动的PlantUML:快速生成专业级UML图表
**对于程序员来说,编写验收文档中的各种UML图是最让人头疼的事情之一,相信各位读者对此深有体会.** 本文将探讨如何利用AI驱动的PlantUML来快速生成专业级别的UML图表,从而减轻这一负担. ...
- 【DVWA】安全测试工具之BurpSuite
一.应用场景 二.安装软件 官网下载地址:https://portswigger.net/burp/releases 下载版本2021.7 注册机的 Github 项目地址:TrojanAZhen/B ...
- 关于高清显示屏下canvas绘制模糊问题探索处理
一般场景 我们看下,我们在高清显示屏下,实现这样一个内容,里面填充颜色及文字.第一种是用普通div元素的方式绘制,第二种就是用canvas的方式来绘制,示例效果如下: 从图上我们可以看出,普通div的 ...
- 亮相CCIG2024,合合信息文档解析技术破解大模型语料“饥荒”难题
近日,2024中国图象图形大会在古都西安盛大开幕.本届大会由中国图象图形学学会主办,空军军医大学.西安交通大学.西北工业大学承办,通过二十多场论坛.百余项成果,集中展示了生成式人工智能.大模型 ...
- CSS – background and styling img
前言 之前写过一些: W3Schools 学习笔记 (2) – CSS Image Sprites W3Schools 学习笔记 (3) – CSS Styling Images & CSS ...
- linux操作系统和文件系统,命令(上)
Linux是一个类似于windows的操作系统 Linux操作系统的一种主要使用方式是通过终端软件:终端软件里只能使用键盘不能使用鼠标,在终端软件里通过输入命令完成各种任务 clear命令可以删除终端 ...