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

使用run()函数在Python中运行系统命令的技巧与方法

发布时间:2023-12-26 21:10:21

在Python中,可以使用subprocess.run()函数来运行系统命令。subprocess.run()函数是Python标准库subprocess模块中的一个函数,用于执行命令行命令。它可以接收一个命令字符串作为参数,并返回一个CompletedProcess对象,其中包含了命令执行的结果和状态。

以下是使用subprocess.run()函数运行系统命令的一些技巧和方法以及相应的示例:

1. 运行简单命令

可以直接传入一个字符串作为命令参数,subprocess.run()函数会自动解析并运行该命令。如下所示:

import subprocess
 
result = subprocess.run('echo "Hello, World!"', shell=True, capture_output=True, text=True)
print(result.stdout)  # 输出: Hello, World!

在上面的例子中,subprocess.run()函数运行了一个简单的命令echo "Hello, World!",并将命令的输出打印到了控制台上。

2. 设置命令参数

可以通过传递列表参数来设置命令的参数。列表中的 个元素是命令本身,后续元素是命令的参数。如下所示:

import subprocess
 
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)

在上面的例子中,subprocess.run()函数运行了一个ls -l的命令,并将命令执行后的输出打印到了控制台上。

3. 捕获命令的输出

可以使用capture_output=True参数来捕获命令的输出。这样,subprocess.run()函数将会返回一个CompletedProcess对象,该对象包含了命令的执行结果和输出。如下所示:

import subprocess
 
result = subprocess.run(['echo', 'Hello, World!'], capture_output=True, text=True)
print(result.stdout)  # 输出: Hello, World!

在上面的例子中,subprocess.run()函数运行了一个echo Hello, World!的命令,并将命令的输出打印到了控制台上。

4. 获取命令的返回值

可以使用returncode属性来获取命令的返回值。返回值为0表示命令执行成功,非零值表示命令执行失败。如下所示:

import subprocess
 
result = subprocess.run('echo "Hello, World!"', shell=True)
print(result.returncode)  # 输出: 0

在上面的例子中,subprocess.run()函数运行了一个echo "Hello, World!"的命令,并打印了命令的返回值。

5. 捕获错误输出

可以使用stderr参数来捕获命令的错误输出。如下所示:

import subprocess
 
result = subprocess.run(['ls', 'nonexistent_file'], capture_output=True, text=True)
print(result.stderr)  # 输出: ls: cannot access 'nonexistent_file': No such file or directory

在上面的例子中,subprocess.run()函数运行了一个ls nonexistent_file的命令,该命令会报错并提示文件不存在。通过capture_output=True参数,我们可以将错误输出捕获到result.stderr属性中,并将其打印出来。

6. 启用shell

可以使用shell=True参数来启用shell来执行命令。这样,可以使用诸如管道、重定向等shell特性。如下所示:

import subprocess
 
result = subprocess.run('echo "Hello, World!" | grep "World"', shell=True, capture_output=True, text=True)
print(result.stdout)  # 输出: Hello, World!

在上面的例子中,subprocess.run()函数使用了shell=True参数,并运行了一个带有管道的shell命令。命令先执行echo "Hello, World!",然后将输出送入grep "World"进行过滤,最终输出的是Hello, World!

这些是使用subprocess.run()函数运行系统命令的一些技巧和方法,通过灵活运用这些技巧,可以方便地在Python中执行各种系统命令。