Python 执行shell命令的几种方法

Python 执行shell命令的几种方法

Python 执行shell命令的几种方法

引言

在实际的开发过程中,有时候需要通过Python脚本执行一些系统级的操作,比如执行shell命令。Python提供了多种方法来执行shell命令,本文将详细介绍这些方法及其使用场景。

方法一:os.system

os.system 方法可以用来执行shell命令,并返回命令的执行结果。它会阻塞当前的进程,直到命令执行完成。

import os

result = os.system('ls -al')
print(result)

运行以上代码,输出结果为命令执行结果的返回值。如果命令执行成功,os.system 返回 0,否则返回非零值。

方法二:subprocess.run

subprocess.run 方法是Python3.5之后引入的新方法。它可以执行shell命令,并返回命令的执行结果、标准输出和错误输出。

import subprocess

result = subprocess.run('ls -al', shell=True, check=True, capture_output=True, text=True)
print(result.returncode)
print(result.stdout)

运行以上代码,可以获得命令执行结果的返回值、标准输出以及错误输出。其中,result.returncode 表示命令的返回值,result.stdout 表示命令的标准输出,result.stderr 表示命令的错误输出。

方法三:subprocess.call

subprocess.call 方法也可以用来执行shell命令,并返回命令的执行结果。它与 os.system 方法类似,都是阻塞当前的进程,直到命令执行完成。

import subprocess

result = subprocess.call('ls -al', shell=True)
print(result)

运行以上代码,输出结果为命令执行结果的返回值。

方法四:subprocess.Popen

subprocess.Popen 方法是一个更底层的方法,可以用来执行shell命令,并返回命令的执行结果、标准输出和错误输出。它具有更多的参数,可用于更灵活的控制命令的执行过程。

import subprocess

process = subprocess.Popen(['ls', '-al'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
print(process.returncode)
print(stdout.decode())

运行以上代码,可以获得命令执行结果的返回值、标准输出以及错误输出。

方法五:sh

sh 是一个第三方库,提供了一种更简洁的方式来执行shell命令。使用 sh,可以直接像调用Python函数一样调用shell命令。

首先,需要安装 sh 库:

pip install sh

接下来,可以使用 sh 来执行shell命令。

import sh

result = sh.ls('-al')
print(result.stdout)

运行以上代码,输出结果为命令的标准输出。

总结

本文介绍了Python执行shell命令的几种方法,包括 os.systemsubprocess.runsubprocess.callsubprocess.Popensh。这些方法各有优劣,可以根据实际需求选择合适的方法来执行shell命令。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程