IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python执行shell命令 -> 正文阅读

[Python知识库]python执行shell命令

python执行shell命令

import os
import subprocess


def run_cmd_system(command):
    try:
        print(f"通过system运行run command: {command}")
        os.system(command)
    except Exception as e:
        print(f"命令运行失败!{e}")
        raise e
    # 第一种,通过os.system执行命令,特点是直接将执行的命令打印出来了,根本不用我们print,但是缺点也很明显,就是不是一个我们可以使用的数据结构,所以这个命令并不实用


def run_cmd_popen(command):
    try:
        print(f"通过popen运行run command: {command}")
        os.popen(command)
        print("os.popen什么都没打印出来")
        print(os.popen(command))
        print(os.popen(command).readlines())
        print(type(os.popen(command).readlines()))

    except Exception as e:
        print(f"命令运行失败!{e}")
        raise e
    # 第二种,通过popen来执行命令,特点是我们执行命令并不会打印任何信息,实用print打印也是一个内存地址而已,需要实用readlines读取,读取出来是一个list,方便处理
    # 如果是小程序,可以尝试用这个。


def run_cmd_subprocess(command):
    try:
        print(f"通过subprocess运行run command: {command}")
        res = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
        res.wait()  # 等待结果返回
        result = res.stdout.readlines()
        print(type(result))
        print(result)
    except subprocess.CalledProcessError as e:
        print(f"命令运行失败!{e}")
        raise e
    return result
    # 第三种,通过subprocess来执行命令,subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值
    # subprocess意在替代其他几个老的模块或者函数,比如:os.system os.spawn* os.popen* popen2.* commands.*
    # 举一个例子,你的主进程是一条源源不断的河流,这个时候你的主进程想要执行一条指令,想要做一些其他的事情,那这个时候,主进程这条河流又不想断流(因为要抽身做其他的事情),那怎么办,最好的办法就是再来一个子进程
    # 这种方法是最被推崇的。


if __name__ == "__main__":
    run_cmd_subprocess("ls")
    run_cmd_system("ls")
    run_cmd_popen("ls")

结果

通过subprocess运行run command: ls
<class 'list'>
[b'__init__.py\n', b'__pycache__\n', b'commandrun.py\n', b'fastapiOne.py\n', b'fastapiTwo.py\n', b'logged.py\n', b'maoli.py\n']
通过system运行run command: ls
__init__.py
__pycache__
commandrun.py
fastapiOne.py
fastapiTwo.py
logged.py
maoli.py
通过popen运行run command: ls
os.popen什么都没打印出来
<os._wrap_close object at 0x7fa3fd242820>
['__init__.py\n', '__pycache__\n', 'commandrun.py\n', 'fastapiOne.py\n', 'fastapiTwo.py\n', 'logged.py\n', 'maoli.py\n']
<class 'list'>
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:37:39  更:2021-12-16 17:39:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:02:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码