python 如何执行linux命令

python 如何执行linux命令

作者:Joshua Lee发布时间:2026-05-06 04:17阅读时长:21 分钟阅读次数:10
常见问答
Q
在 Python 中怎样调用 Linux 命令并获取执行结果?

我想在 Python 里运行一些 Linux 命令,并把命令输出保存下来,应该用什么方式最合适?

A

使用 subprocess 获取命令输出

可以使用 Python 的 subprocess 模块来执行 Linux 命令。常见做法是用 subprocess.run() 执行命令,并通过 capture_output=True 和 text=True 获取标准输出与错误输出。例如:

import subprocess

result = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(result.stdout)
print(result.stderr)

这种方式适合需要读取命令结果的场景,也比简单拼接字符串更安全。

Q
Python 执行 Linux 命令时,怎样传递参数更安全?

如果命令里需要带用户输入参数,怎样写才能降低命令注入风险?

A

使用参数列表而不是字符串拼接

建议把命令和参数分开写成列表传给 subprocess,而不是把整条命令拼成字符串。比如:

import subprocess

filename = "test.txt"
subprocess.run(["cat", filename])

这种写法能减少 shell 解析带来的风险。如果必须使用 shell=True,就要特别注意对输入做校验和转义。

Q
如何在 Python 中执行需要管理员权限的 Linux 命令?

有些 Linux 命令需要 sudo 权限,Python 里能直接运行吗,还是要做额外处理?

A

需要考虑权限与运行环境

Python 可以执行带 sudo 的 Linux 命令,但是否能成功取决于当前用户权限和系统配置。例如:

import subprocess

subprocess.run(["sudo", "systemctl", "restart", "nginx"])

如果命令需要输入密码,程序可能会阻塞。更稳妥的方式是为脚本配置合适的执行权限,或通过系统服务、定时任务等方式运行需要权限的操作。

* 文章含AI生成内容