📜  让 python 运行 cli 命令 - Python (1)

📅  最后修改于: 2023-12-03 15:28:07.213000             🧑  作者: Mango

让 Python 运行 CLI 命令

在开发过程中,我们常常需要通过 Python 脚本来运行系统上的命令行工具,比如 Linux 上的 grep、awk、sed 等等。在 Python 中,通过调用系统 API 可以轻松地实现这个功能。下面介绍几种常见的方法。

方法一:os.system()

os.system() 函数允许在 Python 程序中运行命令行命令,并返回状态码。例如:

import os

# 运行系统命令,如:ls
os.system("ls")

该函数的返回值为命令行命令的状态码,如果状态码不为 0,则表示命令行命令出现错误。一般情况下,0 表示命令成功执行,而其他数字表示错误的类型。

方法二:subprocess.run()

subprocess.run() 是 Python 3.5 引入的新模块, 是较为优秀的程序。它以子进程的形式运行程序,在 Python 中更为常用。

import subprocess

# 运行系统命令,如:ls
subprocess.run(["ls"])

os.system() 不同的是,subprocess.run() 函数的默认行为是在新的进程中运行命令。同时还可以指定参数,如:标准输出和标准错误流的重定向、指定工作目录、运行超时时间等。

# 在当前目录下运行 ls 命令,输出到控制台
subprocess.run(["ls"], cwd="./")

# 在 5 秒超时时间内运行 ls 命令,输出到控制台
subprocess.run(["ls"], timeout=5)
方法三:os.popen()

os.popen() 可以在 Python 中运行系统命令,并返回标准输出流的信息。例如:

import os

# 运行系统命令,如:ls
result = os.popen("ls")

# 输出命令运行结果
print(result.read())

该函数返回一个套接字文件对象,可在其上调用 read()write() 函数。因为在 Python3 中有了更为好用的模块,该模块很少应用到。

方法四:os.exec*()

os.exec*() 启动新的进程来运行命令,并替换当前 Python 进程。

import os

# 替换当前进程为 ls 命令
os.execl("/bin/ls", "ls")

os.exec*() 方法接收命令和参数列表,并替换当前进程。

总结

以上是 Python 在运行系统命令时比较常用的几种方法。其中,subprocess.run() 是 Python 3.x 推荐使用的方法。通过以上几个方法,我们可以很方便地在 Python 中运行命令行命令。