import subprocess
# 示例1: 使用subprocess.run()执行简单命令并获取返回值
result = subprocess.run(['echo', 'Hello, World!'], capture_output=True, text=True)
print("输出:", result.stdout)
# 示例2: 使用subprocess.Popen()与进程交互
with subprocess.Popen(['ping', '-c', '4', 'google.com'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) as proc:
stdout, stderr = proc.communicate()
print("标准输出:\n", stdout)
print("标准错误:\n", stderr)
# 示例3: 执行shell命令并捕获异常
try:
completed_process = subprocess.run('ls -l /nonexistent_directory', shell=True, check=True, capture_output=True, text=True)
print("命令成功执行")
except subprocess.CalledProcessError as e:
print(f"命令执行失败,返回码: {e.returncode}")
print(f"错误信息: {e.stderr}")
# 示例4: 使用subprocess.PIPE进行输入输出重定向
proc = subprocess.Popen(['cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
stdout, stderr = proc.communicate(input='Hello from stdin')
print("从cat命令接收的输出:", stdout)
# 解释说明:
# 1. subprocess.run() 是 Python 3.5 引入的一个便捷函数,用于执行外部命令并等待其完成。
# 2. subprocess.Popen() 提供了更底层的接口,可以与子进程进行交互(例如发送输入、读取输出等)。
# 3. 使用 `capture_output=True` 和 `text=True` 可以方便地捕获和处理命令的输出,并将输出作为字符串处理。
# 4. `check=True` 参数会使命令执行失败时抛出 CalledProcessError 异常,便于错误处理。
# 5. `communicate()` 方法用于与子进程进行通信,可以通过 stdin 发送输入,通过 stdout 和 stderr 获取输出。
上一篇:sqrt在python中的含义
下一篇:python不等号
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站