Python subprocess:参数列表与命令字符串

调用外部程序时,空格、引号与用户输入的边界很重要。使用参数列表并避免不必要的shell解释,可以让每个参数的含义更明确。

表格数据经过整理后成为结构化卡片
浅色主题概念配图,选自本站AI生成图库;非事件现场或产品实测截图。

列表中的每项是一份参数

示例使用当前Python解释器运行一段固定代码,并把带空格的文字作为一个参数传入。程序不需要手工给这个文字加shell引号,也不把它拼成新的可执行命令。

固定程序与固定代码同样重要

参数列表不是允许执行任意程序的授权机制。程序路径、选项和操作范围仍应受控;本例中的-c代码完全固定,不能替换成未经审查的外部输入。不同平台及特殊可执行文件还需查阅对应说明。

给执行结果一个清楚边界

check=True在非零退出时报告异常,timeout限制等待,capture_output保存输出供检查。实际应用还要考虑输出体积与错误信息中的敏感数据。本文仅在隔离目录运行自己的解释器,不启动外部网络命令。

可以运行的练习

import subprocess
import sys
result = subprocess.run(
    [sys.executable, "-c", "import sys; print(sys.argv[1])", "hello world"],
    check=True, capture_output=True, text=True, timeout=5,
)
assert result.stdout.strip() == "hello world"
print(result.stdout.strip())

示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。

资料与继续学习

Python:subprocess。资料查阅日期:2026年9月29日。步骤与练习由本站整理。

资料查阅与编辑日期:2026年9月29日。作者:玖柒。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享