博客
关于我
Python下调用Linux的Shell命令
阅读量:798 次
发布时间:2023-03-09

本文共 1454 字,大约阅读时间需要 4 分钟。

调用Linux Shell命令的方法在Python中有多种选择,每种方法适用于不同的场景。以下是几种常用方法的比较及使用案例:

1. os 模块

1.1 os模块的exec方法族

os模块的exec方法族与Unix的exec系统调用一致,适用于在子进程中运行外部程序。由于不会返回结果,适用于需要交互的命令或不需要返回值的情况。

import osos.system("echo 'Hello World'")val = os.system("ls -al | grep 'log'")print(val)
  • 返回值:命令正常运行时返回0,错误时返回非0。

1.2 os模块的system方法

system方法创建子进程运行命令,并返回外部程序的返回值。适用于不需要输出处理的命令。

import osval = os.system("ls -al | grep 'log'")print(val)

1.3 os模块的popen方法

popen方法返回一个文件对象,通过read()或readlines()读取输出。适用于需要处理输出的命令。

import osresult = os.popen("ls -lt").read()print(result)

2. commands 模块

2.1 commands模块的getoutput方法

getoutput方法直接返回命令的输出结果,适用于简单命令处理。

import commandsresult = commands.getoutput("ls -lt")print(result)

2.2 commands模块的getstatusoutput方法

getstatusoutput方法返回命令的状态和输出,适用于检查命令是否成功。

import commandsstatus, result = commands.getstatusoutput("ls -al | grep 'log'")if "log" in result:    print("Haha, there is the log!")else:    print("No, not happy!")

3. subprocess 模块

3.1 subprocess模块的Popen类

Popen类提供更大的控制,适用于复杂命令和需要处理输入输出的场景。

import subprocessprocess = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE, shell=True)result = process.stdout.read()print(result)

3.2 subprocess模块的call函数

call函数等待命令完成并返回结果,适用于简单命令不需要处理输出的情况。

import subprocessreturn_code = subprocess.call("echo 'Hello World'", shell=True)print(return_code)

4. 方法比较及总结

  • os.system:适用于简单命令,不需要输出处理。
  • os.popen:适用于需要处理输出的命令。
  • commands.getoutput:方便获取命令输出结果。
  • subprocess模块:提供更大的灵活性,适用于复杂命令和高级功能需求。

选择合适的方法取决于具体需求,subprocess模块在处理复杂命令时更为推荐。

转载地址:http://znlfk.baihongyu.com/

你可能感兴趣的文章
python3.6 ubuntu部署nginx、 uwsgi、 django
查看>>
Python3.6.3中,functools似乎不能用
查看>>
python3.6.5+cuda9+cudnn7.1+win10+tensorflow-gpu1.9.0下载配置
查看>>
python3.6使用pickle序列化class
查看>>
python3.6入门到高阶(全栈) day027 网络通信协议 osi七层模型
查看>>
Python3.6属性错误:模块‘;异步没有属性‘;运行‘;
查看>>
python3.6版本中的python-weka-wrapper安装失败,错误代码为%1
查看>>
Python3.7安装cv2踩过的坑
查看>>
python写txt文件
查看>>
python关于sorted排序函数详细解析 附实战代码(全)
查看>>
python3.8调用m文件,调用matlab
查看>>
python3.9新特性_Python 3.9 新特性速览
查看>>
Python3.x:遍历select下拉框获取value值
查看>>
python360百科_11月编程排行榜:Python超过Java成第二
查看>>
Python关于Paginator分页函数详细解析 附实战代码
查看>>
python3、ipython3、setup-tools、pip等环境搭建详细总结
查看>>
python3下使用cv2.imwrite存储带有中文路径图片或者绝对路径图片
查看>>
python3与django中@property详解
查看>>
python3中如何表示无穷大
查看>>
Python3中提示:no module named 'wxpy'
查看>>