📅  最后修改于: 2023-12-03 15:28:07.213000             🧑  作者: Mango
在开发过程中,我们常常需要通过 Python 脚本来运行系统上的命令行工具,比如 Linux 上的 grep、awk、sed 等等。在 Python 中,通过调用系统 API 可以轻松地实现这个功能。下面介绍几种常见的方法。
os.system()
函数允许在 Python 程序中运行命令行命令,并返回状态码。例如:
import os
# 运行系统命令,如:ls
os.system("ls")
该函数的返回值为命令行命令的状态码,如果状态码不为 0,则表示命令行命令出现错误。一般情况下,0 表示命令成功执行,而其他数字表示错误的类型。
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()
可以在 Python 中运行系统命令,并返回标准输出流的信息。例如:
import os
# 运行系统命令,如:ls
result = os.popen("ls")
# 输出命令运行结果
print(result.read())
该函数返回一个套接字文件对象,可在其上调用 read()
和 write()
函数。因为在 Python3 中有了更为好用的模块,该模块很少应用到。
os.exec*()
启动新的进程来运行命令,并替换当前 Python 进程。
import os
# 替换当前进程为 ls 命令
os.execl("/bin/ls", "ls")
os.exec*()
方法接收命令和参数列表,并替换当前进程。
以上是 Python 在运行系统命令时比较常用的几种方法。其中,subprocess.run()
是 Python 3.x 推荐使用的方法。通过以上几个方法,我们可以很方便地在 Python 中运行命令行命令。