在Python中,可以使用subprocess
模块创建和管理子进程
subprocess.run()
subprocess.run()
函数执行指定的命令并等待命令完成。它返回一个 CompletedProcess
实例,其中包含有关执行的命令的信息。
import subprocess
# 执行命令并等待完成
completed_process = subprocess.run(['ls', '-l'], capture_output=True, text=True)
# 打印命令的输出
print(completed_process.stdout)
subprocess.Popen()
subprocess.Popen()
类允许更细粒度的控制子进程。它可以让你启动一个子进程并与之通信。
import subprocess
# 创建一个子进程
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 读取子进程的输出
stdout, stderr = process.communicate()
# 打印命令的输出
print(stdout)
要实现与子进程的交互式通信,可以使用 subprocess.Popen()
并通过 stdin
和 stdout
管道发送和接收数据。
import subprocess
# 创建一个子进程
process = subprocess.Popen(['cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 向子进程发送数据
process.stdin.write('Hello, World!\n')
process.stdin.flush()
# 从子进程读取数据
output = process.stdout.readline()
print(output.strip())
# 关闭子进程的输入管道以结束进程
process.stdin.close()
return_code = process.wait()
subprocess.Popen()
时,请确保正确关闭 stdin
、stdout
和 stderr
管道,以避免死锁和资源泄漏。领取专属 10元无门槛券
手把手带您无忧上云