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.system
、subprocess.run
、subprocess.call
、subprocess.Popen
和 sh
。这些方法各有优劣,可以根据实际需求选择合适的方法来执行shell命令。