Python执行cmd命令行

在Python中,我们可以使用subprocess模块来执行命令行命令,这样可以实现与操作系统交互的功能。本文将详细介绍如何在Python中执行cmd命令行,以及如何处理执行结果。
1. 使用subprocess模块执行cmd命令
subprocess模块是Python中用于创建子进程并与其交互的工具。我们可以使用subprocess.run()函数来执行cmd命令行。
下面是一个简单的示例,演示了如何使用subprocess.run()来执行cmd命令行并获取执行结果:
import subprocess
result = subprocess.run('dir', shell=True, capture_output=True, text=True)
print(result.stdout)
在上面的示例中,我们调用了subprocess.run()函数,并传入了一个命令字符串'dir',表示执行dir命令来列出当前目录下的文件。参数shell=True表示在shell环境中执行命令,capture_output=True表示捕获命令的标准输出,text=True表示以文本模式处理命令输出。最后,我们通过result.stdout来获取命令执行的标准输出,并打印出来。
2. 处理命令执行结果
在上面的示例中,我们通过result.stdout获取了命令执行的标准输出,但实际上subprocess.run()函数还返回了一个CompletedProcess对象,包含了更详细的命令执行结果信息。
下面是一个示例代码,演示了如何获取命令执行的返回码、标准输出和标准错误:
import subprocess
result = subprocess.run('dir abc', shell=True, capture_output=True, text=True)
if result.returncode == 0:
print('命令执行成功,输出为:')
print(result.stdout)
else:
print('命令执行失败,错误信息为:')
print(result.stderr)
在上面的示例中,我们故意执行一个不存在的命令'dir abc',这样会导致命令执行失败。我们通过result.returncode来获取命令的返回码,如果返回码为0,则表示命令执行成功,我们打印出命令执行的标准输出;如果返回码不为0,则表示命令执行失败,我们打印出错误信息。
3. 执行复杂命令和处理输入输出
除了简单的命令行命令外,我们还可以执行复杂的命令,并处理命令的输入和输出。下面是一个示例代码,演示了如何执行一个需要输入和输出的命令:
import subprocess
# 创建一个子进程
p = subprocess.Popen(['python'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 输入命令
command = 'print("Hello, World!")'
output, errors = p.communicate(command)
print('命令执行结果:')
print(output)
在上面的示例中,我们通过subprocess.Popen()函数创建了一个子进程,参数stdin=subprocess.PIPE表示将标准输入重定向到一个管道,参数stdout=subprocess.PIPE表示将标准输出重定向到一个管道,参数stderr=subprocess.PIPE表示将标准错误重定向到一个管道。然后,我们通过p.communicate(command)向子进程输入命令,并获取标准输出和标准错误。最后,我们打印出命令执行的结果。
结论
通过使用subprocess模块,我们可以在Python中执行cmd命令行,并与操作系统进行交互。我们可以获取命令执行的标准输出、标准错误和返回码,以及处理命令的输入和输出,实现更复杂的功能。
极客教程