双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

`import subprocess` 是 Python 中导入标准库模块 `subprocess` 的语句

Bol5261 CSDN会员 Bol5261 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

`import subprocess` 是 Python 中导入标准库模块 `subprocess` 的语句,该模块用于**生成新进程、连接其输入/输出/错误管道,并获取返回码**,是 Python 与操作系统命令行交互的核心工具。

✅ 主要用途包括:  
- 执行 shell 命令(如 `ls`, `git status`, `ping`, 自定义脚本等);  
- 捕获命令输出(stdout/stderr)用于后续处理;  
- 控制进程执行超时、环境变量、工作目录等;  
- 替代已弃用的 `os.system()`、`os.popen()` 和 `commands` 模块,更安全、灵活、跨平台。

📌 常用函数示例:
```python
import subprocess

# ✅ 推荐:run() —— 现代、简洁、返回 CompletedProcess 对象
result = subprocess.run(["python", "--version"], 
                         capture_output=True, text=True)
print(result.stdout.strip())  # 输出如 'Python 3.12.4'

# ✅ 调用 shell 命令(注意安全:避免 shell=True + 用户输入拼接!)
subprocess.run("echo Hello World", shell=True)

# ✅ 捕获并处理实时输出(适用于长时运行命令)
proc = subprocess.Popen(["ping", "-c", "3", "python.org"],
                        stdout=subprocess.PIPE,
                        stderr=subprocess.STDOUT,
                        text=True)
for line in proc.stdout:
    print(f"[OUTPUT] {line.rstrip()}")

# ✅ 传入环境变量或修改 cwd
subprocess.run(["ls", "-l"], cwd="/tmp", env={"LANG": "C"})
```

⚠️ 安全提醒:  
- 避免 `shell=True` 与不可信输入拼接(易导致 shell 注入),应优先使用参数列表形式(如 `["ls", "-l", filename]`);  
- `check=True` 可在命令失败时自动抛出 `subprocess.CalledProcessError`;  
- Windows 下注意可执行文件路径(推荐使用绝对路径或确保在 `PATH` 中)。

...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
Bol5261 CSDN会员
Bol5261 新星创作者: Java技术领域 新星创作者: Java技术领域优质创作者: 学术研究与理论基础技术领域 优质创作者: 学术研究与理论基础技术领域
Borter 9 成员 1,344 内容