在 Python 中,可以使用内置模块如 `os` 或 `subprocess` 来执行 Windows 命令。下面是一些常见的示例:
1. 使用 `os` 模块:
python
import os
查看当前目录中的所有文件
os.system('dir')
请注意,`os.system()` 将输出传递给控制台,并返回命令的退出状态(通常为0或非0)。这种方式适用于简单的系统调用,不推荐用于捕获输出。
2. 使用 `subprocess` 模块:
执行命令并打印输出:
python
import subprocess
output = subprocess.run(['dir'], stdout=subprocess.PIPE, text=True, shell=True)
print(output.stdout)
执行命令但不打印直接捕获返回代码:
python
import subprocess
result = subprocess.run(['shutdown', '/s'], check=False) 调度关机
if result.returncode != 0:
print("Command failed")
高级示例:带参数运行命令:
python
import subprocess
p = subprocess.Popen(["ping", "127.0.0.1"], stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
stdout_data, stderr_data = p.communicate() 读取输出和错误
print(stdout_data.decode())
print(stderr_data.decode())
if p.returncode == 0:
print("Ping successful.")
else:
print("Error: ping returned code {}".format(p.returncode))
`shell=True`
注意:当需要传递复杂字符串(特别是包含多个命令分隔或管道)时,请确保设置了参数 `shell=True`。
这会启动系统的 shell 来解析该字符串并调用对应的程序/进程。
不过要注意,如果 `shell=True` 使用不当可能会存在一些安全隐患。尤其是处理不可信数据时要格外小心,否则可能会产生代码注入攻击。
综上,对于日常简单的操作,使用更安全的 `subprocess` 应当成为默认选择。而更复杂的任务或需要执行系统级别指令的情况下,才建议选用这种方式并适当评估风险。
发表评论