Python中使用commands.getoutput()函数执行系统命令的详细教程
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时,要确保命令是可信的,以避免安全风险。
