当在Linux系统下需要调用系统的Shell命令时,Python提供了subprocess模块作为实现方式。在下面的攻略中,将在Python 3环境下讲解如何使用subprocess模块调用Shell命令。
1. subprocess模块的基本使用方法
在Python中使用subprocess模块可以轻松地调用系统的Shell命令,并获取执行结果。
import subprocess
# 调用Shell命令
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
# 输出执行结果
print(result.stdout)
运行上面的代码,将会在终端中输出当前目录下的文件列表。
在这个示例代码中,我们首先通过subprocess.run来调用了Shell命令“ls -l”。 run方法的第一个参数是一个列表,代表了要执行的命令及其参数。第二个参数capture_output为True意味着终端输出会被捕获并保存至执行结果中。第三个参数text为True意味着返回值是Unicode编码的字符串。
使用subprocess模块调用Shell命令的常见场景包括:执行系统命令、在Python程序中使用Shell脚本等。
下面的代码展示了如何在Python中执行一个Shell脚本:
import subprocess
# 执行Shell脚本
result = subprocess.run(['sh', 'test.sh'], capture_output=True, text=True)
# 输出执行结果
print(result.stdout)
在以上示例中,我们执行了名为‘test.sh’的Shell脚本,并将执行结果保存至result变量中。
2. subprocess模块的高阶应用
除了基本使用方法,subprocess库还有其他进阶的用法,如并行执行多个命令、使用管道等。
以下代码演示如何在Python中使用管道,将一个命令的输出传递给另一个命令:
import subprocess
# 使用管道传递命令
result = subprocess.run(['ls', '-l', '|', 'grep', '.py'], capture_output=True, text=True, shell=True)
# 输出执行结果
print(result.stdout)
在以上示例代码中,我们使用了管道符将“ls -l”命令的输出传递给另一个命令“grep .py”, 并通过传递shell=True参数启用Shell解析管道符。
此外,还可以使用subprocess库在 Python 中并行执行多个命令,使用 Popen() 函数来启动命令并将其放在子进程中。
import subprocess
# 并行执行两条命令
process1 = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
process2 = subprocess.Popen(['grep', '.txt'], stdin=process1.stdout, stdout=subprocess.PIPE)
# 输出执行结果
print(process2.communicate()[0])
在以上示例代码中,我们并行执行了两条命令。第一条命令是“ls -l” 以及其中的所有文件都在子进程 1 的管道中输出,第二条命令是“grep .txt”,从子进程 1 的的stdout管道中读取文件列表,搜索文件名中包含“.txt”字符串的所有文件名,并将结果输出到子进程 2 的stdout管道中。
以上是在Linux系统下Python调用系统Shell的方法的攻略,希望可以帮助到学习Python编程的读者们。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:举例讲解Linux系统下Python调用系统Shell的方法 - Python技术站