Python3 执行 Shell 命令
在Python中,我们可以很方便地执行Shell命令。这使得我们可以通过Python脚本来自动化执行系统命令,进行批量处理、数据分析等操作。本文将介绍如何使用Python3执行Shell命令,并提供一些常用的示例代码。
使用os.system()
函数执行Shell命令
Python的标准库中提供了os.system()
函数,可以用于执行Shell命令。该函数接受一个字符串参数,表示要执行的Shell命令,返回命令的执行结果。
下面是一个简单的示例,使用os.system()
函数执行一个ls
命令,列出当前目录下的文件和文件夹:
import os
os.system('ls')
上述代码执行后,会在终端输出当前目录下的文件和文件夹的列表。
我们也可以将命令的执行结果保存到一个变量中,以便后续处理。例如,我们可以将ls
命令的执行结果保存到一个字符串中:
import os
result = os.popen('ls').read()
print(result)
上述代码执行后,会将当前目录下的文件和文件夹的列表打印出来。
使用subprocess
模块执行Shell命令
除了os.system()
函数外,Python的subprocess
模块还提供了更强大和灵活的功能来执行Shell命令。subprocess
模块可以创建新的进程来执行命令,并与其进行交互。
下面是一个使用subprocess
模块执行Shell命令的示例:
import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
上述代码使用subprocess.run()
函数执行ls -l
命令,并将命令的输出结果保存到result
变量中。capture_output=True
参数表示将命令的输出结果捕获到result
变量中,text=True
参数表示将命令的输出结果以文本形式(字符串)返回。
我们还可以使用subprocess
模块执行包含管道、重定向等特殊操作的Shell命令。例如,下面的代码使用subprocess
模块执行一个包含管道的命令,将ls
命令的输出结果通过管道传递给grep
命令进行过滤:
import subprocess
result = subprocess.run('ls -l | grep .py', capture_output=True, shell=True, text=True)
print(result.stdout)
上述代码执行后,会将当前目录下的所有以.py
结尾的文件打印出来。
使用sh
库执行Shell命令
除了标准库中的os
和subprocess
模块外,还有第三方库sh
可以用于执行Shell命令。sh
库提供了一种更简洁和易用的方式来执行Shell命令。
要使用sh
库,首先需要使用pip
命令安装该库:
pip install sh
下面是一个使用sh
库执行Shell命令的示例:
import sh
result = sh.ls('-l')
print(result)
上述代码执行了一个ls -l
命令,并将命令的输出结果打印出来。
sh
库还提供了方便的方法来执行更复杂的Shell命令,如管道、重定向等。例如,下面的代码使用sh
库执行一个包含管道的命令,将ls
命令的输出结果通过管道传递给grep
命令进行过滤:
import sh
result = sh.ls('-l') | sh.grep('.py')
print(result)
上述代码执行后,会将当前目录下的所有以.py
结尾的文件打印出来。
总结
本文介绍了在Python3中执行Shell命令的方法和示例代码。我们可以使用os.system()
函数、subprocess
模块或sh
库来执行Shell命令,根据具体的需求选择合适的方法。
执行Shell命令可以方便地进行批量处理、数据分析等操作,帮助我们提高工作效率。但