Python的subprocess
模块允许你启动新的进程并与它们进行交互
- 运行外部命令:
subprocess
模块可以用来执行系统命令,如你在终端中所做的那样。例如,你可以使用subprocess.run()
函数执行一个简单的命令并获取其输出:
import subprocess result = subprocess.run(['ls', '-l'], capture_output=True, text=True) print(result.stdout)
- 与外部程序进行数据交换:你可以使用
subprocess
模块与外部程序进行双向通信。例如,你可以使用subprocess.Popen
类创建一个子进程,并通过管道与其进行交互:
import subprocess process = subprocess.Popen(['cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True) process.stdin.write('Hello, World!\n') process.stdin.flush() output = process.stdout.readline() print(output)
- 并行执行多个任务:
subprocess
模块可以用来并行执行多个外部命令。例如,你可以使用subprocess.Popen
类创建多个子进程,并使用join()
方法等待它们完成:
import subprocess process1 = subprocess.Popen(['echo', 'Hello, World!']) process2 = subprocess.Popen(['ls', '-l']) process1.wait() process2.wait()
- 在Python脚本中嵌入其他语言:
subprocess
模块可以用来执行其他语言的脚本,如C、C++、Java等。例如,你可以使用subprocess.run()
函数执行一个Python脚本:
import subprocess result = subprocess.run(['python', 'example.py'], capture_output=True, text=True) print(result.stdout)
- 使用外部库:有时,你可能需要使用其他Python库来完成任务,但这些库可能没有安装在你的系统上。在这种情况下,你可以使用
subprocess
模块运行pip
或其他包管理器来安装所需的库:
import subprocess subprocess.run(['pip', 'install', 'requests'])
总之,subprocess
模块在许多场景下都非常有用,它允许你与外部程序和系统命令进行交互,从而实现更丰富的功能。