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

Python中使用commands.getoutput()函数执行系统命令的详细教程

发布时间:2024-01-15 23:55:19

commands模块在Python 2版本中无法使用,可以使用subprocess模块来执行系统命令。subprocess模块提供了更强大和安全的方式来执行系统命令,同时也允许更简单地捕获命令的输出。

下面是一个使用subprocess模块执行系统命令的详细教程,同时带有一些例子:

1. 使用方式

subprocess模块提供了多个函数来执行系统命令,其中最常用的是subprocess.call()和subprocess.check_output()函数。

subprocess.call()函数用于执行一个系统命令,并等待命令执行完毕。它接收一个包含命令及其参数的列表作为参数,返回命令的退出状态码。

subprocess.check_output()函数用于执行一个系统命令,并返回命令的输出结果。它接收一个包含命令及其参数的列表作为参数,返回一个包含输出结果的字符串。

2. 使用示例

下面是几个使用subprocess模块执行系统命令的示例:

2.1 执行命令并等待命令结束

import subprocess

# 执行简单的系统命令

subprocess.call(["ls", "-l"])

subprocess.call(["ping", "127.0.0.1"])

# 执行带有参数的系统命令

subprocess.call(["mkdir", "-p", "/tmp/test"])

2.2 执行命令并获取输出结果

import subprocess

# 获取命令的输出结果

output = subprocess.check_output(["ls", "-l"])

print(output)

# 获取命令的输出结果,并以列表形式返回

output = subprocess.check_output(["ls", "-l"]).splitlines()

print(output)

2.3 执行命令并处理错误

import subprocess

# 执行命令,并检查返回状态码

try:

    subprocess.check_call(["ls", "-l"])

except subprocess.CalledProcessError as e:

    print("Command execution failed with exit code", e.returncode)

# 执行命令,如果返回状态码不为0,则抛出异常

output = subprocess.check_output(["ls", "-l"], stderr=subprocess.STDOUT)

print(output)

2.4 使用shell执行命令

import subprocess

# 使用shell执行命令

output = subprocess.check_output("ls -l", shell=True)

print(output)

# 使用shell执行命令,命令输出到文件

subprocess.call("ls -l > output.txt", shell=True)

以上就是一个使用subprocess模块执行系统命令的详细教程,以及一些常见的示例。记得在使用subprocess模块时,需要注意命令的安全性,特别是当使用shell=True时,要确保命令是可信的,以避免安全风险。