Python执行cmd命令
在实际的开发过程中,我们经常需要通过Python脚本来执行一些命令行命令,比如调用系统命令、执行批处理文件等。本文将详细介绍如何使用Python来执行cmd命令,并探讨一些常见的应用场景。
使用subprocess模块执行cmd命令
Python中的subprocess
模块提供了许多功能强大的函数,可以方便地执行外部命令,并与这些命令的输入、输出和错误流进行交互。下面是一个简单的示例代码,演示了如何使用subprocess
模块执行一个简单的cmd命令:
import subprocess
cmd = 'dir' # Windows中查看当前目录下的文件列表命令
result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, encoding='utf-8')
print(result.stdout)
在上面的代码中,我们通过subprocess.run()
函数执行了dir
命令,并将输出赋值给result
变量。subprocess.run()
函数的参数中,shell=True
表示将字符串作为shell命令来执行,stdout=subprocess.PIPE
表示将标准输出重定向到一个管道中,encoding='utf-8'
表示使用utf-8编码解码输出。
运行上述代码,可以得到当前目录下的文件列表,结果类似如下:
驱动器 C 中的卷没有标签。 卷的序列号是 0000-0000
C:\Users\Username\Documents 的目录
执行带参数的cmd命令
有时候我们需要执行带参数的cmd命令,比如在Windows系统中需要创建一个文件夹。下面是一个示例代码,演示了如何执行带参数的cmd命令:
import subprocess
folder_name = 'test_folder'
cmd = f'mkdir {folder_name}'
result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8')
if result.returncode == 0:
print(f'文件夹"{folder_name}"创建成功!')
else:
print(f'文件夹"{folder_name}"创建失败:{result.stderr}')
在上述代码中,我们使用了mkdir
命令来创建一个名为test_folder
的文件夹。subprocess.run()
函数的返回值returncode
表示命令的退出状态码,通常情况下,0表示成功,非0表示失败。我们根据returncode
的值来判断文件夹是否成功创建,并输出相应的提示信息。
执行复杂的cmd命令
有时候需要执行比较复杂的cmd命令,可能含有管道、重定向、多个命令组合等。下面是一个示例代码,演示了如何执行一个复杂的cmd命令,并获取其输出:
import subprocess
cmd = 'dir /S /B | findstr .txt > output.txt'
result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8')
if result.returncode == 0:
print('命令执行成功!')
with open('output.txt', 'r') as f:
print(f.read())
else:
print('命令执行失败:', result.stderr)
在上述代码中,我们执行了一个带有管道、重定向的复杂命令,将当前目录及其子目录下所有的.txt
文件路径输出到output.txt
文件中。我们首先判断命令的执行状态,如果成功则打印输出,否则输出错误信息。
执行多个cmd命令
有时候可能需要执行多个cmd命令,甚至需要先后顺序执行这些命令。下面是一个示例代码,演示了如何执行多个cmd命令并获取最后一个命令的输出:
import subprocess
cmds = [
'echo "Hello, World!"',
'dir',
'ipconfig /all'
]
result = None
for cmd in cmds:
result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8')
if result.returncode == 0:
print('所有命令执行成功!')
print(result.stdout)
else:
print('命令执行失败:', result.stderr)
在上述代码中,我们将多个cmd命令存储在列表cmds
中,通过循环依次执行这些命令。最后打印最后一个命令的输出。这种方法适用于需要按顺序执行多个命令的场景。
总结
本文介绍了如何使用Python来执行cmd命令,包括简单命令、带参数的命令、复杂命令、多个命令等多种情况。subprocess
模块提供了丰富的函数来实现与外部命令的交互,可以根据实际需求灵活运用。在开发过程中,合理利用Python执行cmd命令,可以帮助我们实现更多功能,提高效率。