本文共 1254 字,大约阅读时间需要 4 分钟。
在Python中,subprocess模块是实现进程交互的强大工具。它允许我们在父进程和子进程之间实现标准输入/输出的交互。本文将详细介绍如何使用subprocess模块创建、管理并与子进程进行通信。
首先,我们需要导入subprocess模块:
import subprocess
要创建子进程,可以使用Popen()函数。根据具体需求,可以选择传递命令字符串或命令列表。
proc = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc = subprocess.Popen('python script.py', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 子进程运行后,可以通过.communicate()方法获取输出。该方法会阻塞直到子进程结束。
stdout, stderr = proc.communicate()
stdout和stderr返回的是字节串,需要通过解码转换为字符串。
print("Stdout:", stdout.decode('utf-8'))print("Stderr:", stderr.decode('utf-8')) 如果子进程运行时间过长,可以设置超时:
proc = subprocess.Popen([...], timeout=5)
或者在子进程结束后主动终止:
proc.terminate()
确保子进程输出的编码与父进程一致。默认情况下,通常使用utf-8。
stdout.decode('utf-8') 如果子进程依赖特定环境变量,可以在运行时设置:
proc = subprocess.Popen([...], env={'PATH': '/usr/local/bin:.'}) 需要管理员权限执行的脚本,可以通过sudo执行:
python test_subprocess.py
确保有script.py文件,内容如下:
import sysprint("Hello, World from Python!")input_data = input("Enter something: ")print(f"You entered: {input_data}") 运行test_subprocess.py:
python test_subprocess.py
通过上述步骤,我们可以实现父进程与子进程之间的标准输入/输出交互。在实际应用中,可以根据具体需求调整参数和处理方式,以充分发挥subprocess模块的强大功能。
转载地址:http://pflfk.baihongyu.com/