📜  python 运行命令 - Python (1)

📅  最后修改于: 2023-12-03 14:46:18.930000             🧑  作者: Mango

Python 运行命令 - Python

简介

Python 是一种高级编程语言,具有简单易学、优雅简洁、开发效率高等特点。Python 的解释器可以在多个平台上运行,也支持大多数操作系统。

本文将介绍在 Python 中运行命令的几种方式,以及各种方式的使用场景。

在 Python 中运行命令
使用 os 模块

我们可以使用 os 模块中的 system 函数来运行命令。这个函数可以在终端中执行指定的命令,并返回命令的返回值。

import os

# 运行 ping 命令
os.system('ping www.baidu.com')

但是需要注意的是,这种方式在程序中执行命令时,是以 Python 所在的用户身份来执行命令的。因此,您需要有足够的权限来执行您想要运行的命令。

使用 subprocess 模块

另一种运行命令的方式是使用 subprocess 模块。这个模块提供了更多的控制和灵活性,并且可以很容易地获取命令的输出、错误和状态。

import subprocess

out_bytes = subprocess.check_output(['ping', 'www.baidu.com'])
out_text = out_bytes.decode('utf-8')
print(out_text)

check_output 函数会在默认的情况下等待命令完成,然后返回命令的输出。如果命令返回非零状态码,则会引发 CalledProcessError 异常。

如果您需要在 shell 中执行命令,并且需要使用 shell 变量或通配符扩展,那么可以使用 shell=True 参数。

import subprocess

out_bytes = subprocess.check_output('echo $HOME', shell=True)
out_text = out_bytes.decode('utf-8')
print(out_text)

但是需要注意的是,在使用 shell=True 时,需要小心避免 "code injection" 攻击。

使用 exec 函数

如果您希望在 Python 程序中启动一个新的进程来运行命令,那么可以使用 exec 函数。这个函数会在当前进程中替换掉 Python 解释器,然后以指定的命令作为新的进程来运行。

import os

os.execvp('ping', ['ping', 'www.baidu.com'])
print('这句话将不会被执行')

但是需要注意的是,exec 函数会在当前进程中替换掉 Python 解释器,因此整个 Python 程序将会停止执行,并只有在命令完成后才会继续执行。如果您希望 Python 程序在命令继续运行期间继续执行其他操作,那么可以使用 fork 函数和 exec 函数的组合。

结语

本文介绍了在 Python 中运行命令的几种方式。您可以根据自己的需求选择不同的方式。如果您需要更多的控制和灵活性,那么建议使用 subprocess 模块。如果您需要启动一个新的进程来运行命令,并且不需要继续执行 Python 程序,那么可以使用 exec 函数。