使用Python的run()函数执行系统命令的实例
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()等,用于更灵活和高级的需求。在使用这些函数时,请务必小心处理输入数据,以避免安全风险。
