在 Python 中执行 Shell 命令并获取输出
在本文中,我们将学习如何借助 os.system()
从 Python 脚本执行 cmd 命令。 我们还将学习如何借助 Python 中的 subprocess 模块以更简单的方式从脚本执行 cmd 命令。
从 Python 脚本执行 CMD 命令并使用 os.system() 获取输出
我们出于不同目的在命令提示符或任何其他终端中执行终端命令。 但是,有时,需要在脚本内运行特定命令。
我们将了解如何直接在 Python 脚本中执行它们。 当我们进行服务器配置时,它非常方便。
首先,让我们向您展示一些在终端中工作的命令,例如 dir、cd 或 md。
现在,我们将了解如何在 Python 脚本中包含相同的内容。 为此,我们将导入一个名为 os.
os 模块将帮助我们与操作系统进行交互。 os 模块对文件和文件夹管理等操作系统任务提供广泛的支持。
让我们进入代码。 system()
是一个在类似 shell 中执行命令的方法,因此如果我们给它任何命令,它就会继续执行它们,就像我们在终端中执行它们一样。
系统函数还可以执行一堆命令。 它执行您可以在终端中运行的每个命令。
我们将使用 try 块,在该块内,我们将使用 system()
方法,这将帮助我们使用终端与操作系统进行交互。 如果 try 块没有执行指定的命令,我们将进入 except 块。
在 system()
方法内部,我们必须传递命令,但命令类型是 cmd。 为此,我们使用 /k,并在单引号或双引号内输入我们的命令。
import os
try:
os.system('cmd /k "date"')
except:
print('Could not execute command')
让我们运行一下,看看这是否给出了准确的输出。
The current date is: 24/08/2022
Enter the new date: (dd-mm-yy)
我们可以看到输出与命令提示符给出的相同。
您可以执行很多命令。 您可以打开记事本或计算器,也可以查看系统信息等等。
如果你想获取命令返回的内容,可以使用 os 模块的 popen()
函数获取。 在这个函数内部,我们可以传递命令并使用 readlines()
方法来获取其内容。
我们可以使用很多方法来获取干净的数据。 这取决于你。
import os
DATA=os.popen('help').readlines()[5].strip('\n')
print(DATA)
我们可以在任何地方使用这些命令,例如类、循环和函数。 这将正常工作,无需将其包装在函数中。
import os
def CMD_Com():
DATA=os.popen('help').readlines()[5].strip('\n')
print(DATA)
CMD_Com()
输出:
CACLS Displays or modifies access control lists (ACLs) of files.
从 Python 脚本执行 CMD 命令并使用 Subprocess 模块获取输出
与子流程交互是一项基本技能。 不建议使用 os 模块在 Python 脚本内执行终端命令。
使用 os.system()
执行终端命令是在 Python 中运行命令的一种非常简单的方法。
os.system()
的功能有限; 正确的方法是使用一个名为 subprocess 的模块,这使得执行终端命令不太具有挑战性。 使用 subprocess 模块,我们可以运行当前正在处理的所有操作系统命令。
这就是我们在操作系统中运行所有现有命令的方式,例如打开记事本或检查当前工作目录,或我们可以使用 subprocess 模块执行的任何其他操作。
import subprocess
# subprocess.Popen('notepad')
# subprocess.Popen('systeminfo')
subprocess.Popen("dir", shell=True)
输出:
Directory of C:\Users\Dell\Downloads\demo
24/08/2022 07:01 pm <DIR> .
24/08/2022 07:01 pm <DIR> ..
25/08/2022 01:47 am 460 demo.py
1 File(s) 460 bytes
2 Dir(s) 32,532,512,768 bytes free
相关文章
Python 中的 Monkey 补丁
发布时间:2023/06/28 浏览次数:186 分类:Python
-
本文解释了什么是Monkey补丁以及如何在 Python 中实现它。 它有两个部分; 第一个演示了函数中的Monkey修补,第二个演示了如何在文件的单元测试中实现它。
Python 中的 Mock 和 Patch 之间的区别
发布时间:2023/06/28 浏览次数:182 分类:Python
-
在 Python 中,我们有一个称为单元测试的过程,其中包含模拟和补丁函数。 本文将讨论这两个角色的用途和区别。Python 中 Mock 和 Patch 对象库的用途和区别
在 Python 中使用 SciPy、NumPy 和 Pandas 存储数据
发布时间:2023/06/28 浏览次数:184 分类:Python
-
我们将了解为什么需要数据分箱以及哪种技术最适合哪种情况。Python 中的分箱 分箱是推断不同变量关系的最强大的分析技术之一。分箱是一种非参数且高度灵活的技术,其中变量被分类为不同
在 Python 中使用 Fsolve
发布时间:2023/06/28 浏览次数:65 分类:Python
-
本文将探讨如何使用 fsolve 在 Python 中求解。 我们还将探索它的使用场景和一些示例代码,以更好地理解如何以及何时使用它来达到某种结果。让我们首先了解 fsolve 是什么以及为什么使用它。
在 Python 中创建 Getter 和 Setter
发布时间:2023/06/28 浏览次数:172 分类:Python
-
这些行为在支持 OOP 的编程语言中很流行,Python 也支持它。 本文将讨论如何在 Python 中创建 getter 和 setter。Python 中的 Getter 和 Setter
从 Java 代码调用 Python 脚本
发布时间:2023/06/28 浏览次数:93 分类:Python
-
本篇文章介绍了从 Java 代码调用 Python 脚本的三种不同方法。从 Java 代码调用 Python 脚本 有时,我们必须从Java代码中调用Python脚本来满足项目需求。
Python 中的位掩码简介
发布时间:2023/06/27 浏览次数:125 分类:Python
-
本篇文章介绍了 Python 中的位掩码,并演示了如何使用按位运算符(例如 AND、OR、NOT 等)执行位掩码。Python 中的位掩码简介 位掩码是几乎所有编程语言的通用概念;
在 Ubuntu 中卸载 Python
发布时间:2023/06/27 浏览次数:158 分类:Python
-
本文演示如何从 Ubuntu 中删除或卸载 Python。检查你的系统中是否安装了Python 使用 Ctrl+Alt+T 打开终端。打开终端后,使用命令 python3 --version 检查您的系统是否安装了 python。
Python Teradata 连接
发布时间:2023/06/27 浏览次数:86 分类:Python
-
本文将讨论一些基本的正确准则,并在讨论连接方式之前了解 Teradata 模块的工作原理。Python 中的 Teradata 数据库 您可以使用 Python 和 Teradata 模块编写与 Teradata 数据库的强大交互脚本。