欢迎访问宙启技术站
智能推送

使用Python的run()函数执行系统命令的实例

发布时间:2024-01-02 04:03:13

Python的subprocess模块提供了许多函数来执行系统命令,其中之一是run()函数。run()函数用于执行一个给定的系统命令,并返回一个CompletedProcess对象,该对象包含了执行命令的结果。

下面是一个使用run()函数执行系统命令的例子:

import subprocess

# 执行系统命令
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)

在上面的例子中,我们使用run()函数来执行ls -l命令,并将输出结果存储在result变量中。subprocess.run()接受一个列表作为输入参数,其中 个元素是要执行的命令,后面的元素是命令的参数。我们还传递了两个可选参数给run()函数:

- capture_output=True:将命令的输出捕获到result.stdout属性中。如果不设置该参数,命令的输出将会直接打印到控制台。

- text=True:将命令的输出解码为字符串。如果不设置该参数,输出将会是一个字节流。

在上面的例子中,result.stdout将会包含ls -l命令的输出结果。我们使用print()函数将其打印出来。

除了捕获输出外,run()函数还提供了其他一些有用的功能。下面是一些常用的例子:

1. 检查命令是否执行成功:

import subprocess

result = subprocess.run(['echo', 'Hello, World!'])
if result.returncode == 0:
    print("命令执行成功。")
else:
    print("命令执行失败。")

在上面的例子中,我们执行了echo 'Hello, World!'命令。returncode属性表示命令的返回码。如果返回码为0,则表示命令执行成功。

2. 传递输入数据给命令:

import subprocess

result = subprocess.run(['grep', 'World'], capture_output=True, text=True, input='Hello, World!')
print(result.stdout)

在上面的例子中,我们执行了grep 'World'命令,并将输入数据Hello, World!传递给命令。输出结果将会是匹配到的行。

3. 捕获错误输出:

import subprocess

result = subprocess.run(['ls', 'nonexistent_file'], capture_output=True, text=True)
print(result.stderr)

在上面的例子中,我们执行了ls nonexistent_file命令,而nonexistent_file文件并不存在。stderr属性将会包含命令的错误输出结果。

以上只是run()函数的一些常用用法。subprocess模块提供了许多其他函数,如Popen()check_output()等,用于更灵活和高级的需求。在使用这些函数时,请务必小心处理输入数据,以避免安全风险。