Python如何执行系统命令

Python 有一个名为 subprocess 的标准库模块,可以用来执行系统命令。下面是使用 subprocess 模块进行系统命令操作的完整攻略:

Python 有一个名为 subprocess 的标准库模块,可以用来执行系统命令。下面是使用 subprocess 模块进行系统命令操作的完整攻略:

引入模块

首先需要引入 subprocess 模块:

import subprocess

执行命令

接下来使用 subprocess.run() 方法来执行系统命令。这个方法的调用方式如下:

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, encoding=None, errors=None)

其中参数 args 是一个字符串或者字符串列表,表示要执行的命令。

如果参数 shell 被设置为 True,则可以使用 shell 命令语法。

例如,要在 Linux 上执行一个简单的 ls 命令并在控制台打印出结果,可以这样做:

subprocess.run(['ls', '-l'])

如果要在 Windows 上执行一个 dir 命令,也可以这么做:

subprocess.run(['cmd', '/c', 'dir'])

注意 Windows 上使用 CMD 时需要在命令前加上 /c 参数,来表示跟随的命令字符串。

捕获命令输出

如果要捕获命令输出,可以使用参数 stdoutstderr。这两个参数可以是一个文件对象或者一个文件描述符,也可以是一个 subprocess.PIPE 对象,表示当子进程执行时捕获 stdout 和 stderr 数据。

例如,下面的代码在执行完一个 ls 命令后将结果保存在一个变量 result 中:

result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode())

在 Windows 上使用 dir 命令时也可以通过 subprocess.PIPE 捕获输出:

result = subprocess.run(['cmd', '/c', 'dir'], stdout=subprocess.PIPE)
print(result.stdout.decode())

示例

下面是一个完整的示例,用于在 Python 中执行 ping 命令,并输出结果到控制台:

import subprocess

hostname = "google.com"
result = subprocess.run(['ping', '-c', '5', hostname], stdout=subprocess.PIPE)

print(result.stdout.decode())

下面是一个 Windows 上的示例,用于执行一个简单的 ipconfig 命令:

import subprocess

result = subprocess.run(['cmd', '/c', 'ipconfig'], stdout=subprocess.PIPE)

print(result.stdout.decode())

注意,在 Windows 上,在命令最后面并不需要使用 & 符号。

本文标题为:Python如何执行系统命令

基础教程推荐