如何在Python中将CMD命令执行结果存入变量?
在Python中捕获CMD命令执行结果到变量
直接用subprocess模块就行,这是Python官方推荐的替代os.system、os.popen的工具,能轻松捕获命令的输出内容。下面是你要的封装实现:
封装调用函数
import subprocess def command(cmd): # 执行命令并捕获输出 result = subprocess.run( cmd, shell=True, capture_output=True, encoding='cp936' # Windows CMD默认编码是cp936,避免乱码 ) # 返回命令的标准输出,去掉首尾空白 return result.stdout.strip()
调用示例
捕获arp命令输出
arp_inf = command('arp -a 192.168.100.1') print(arp_inf) # 输出类似: # Interface: 192.168.100.100 --- 0x3 # Internet Address Physical Address Type # 192.168.100.1 xx-xx-xx-xx-xx-xx dynamic
捕获tasklist命令输出
task_info = command('tasklist') print(task_info) # 输出所有进程的列表信息
关键参数说明
shell=True:让系统通过shell(Windows就是CMD)执行命令,支持带参数的复杂命令capture_output=True:同时捕获标准输出(stdout)和错误输出(stderr)encoding='cp936':指定编码格式,解决Windows下中文乱码问题
处理命令执行错误
如果命令执行失败(比如输错命令),可以通过result.stderr查看错误信息:
def command_with_error(cmd): result = subprocess.run( cmd, shell=True, capture_output=True, encoding='cp936' ) if result.returncode != 0: return f"命令执行出错:{result.stderr.strip()}" return result.stdout.strip() # 测试错误情况 print(command_with_error('arp -x 192.168.100.1'))
之前用os模块没生效,是因为os.system只能返回命令的退出码,没法捕获输出;os.popen虽然能捕获,但功能有限且官方已不推荐使用,subprocess是更安全、灵活的选择。
内容的提问来源于stack exchange,提问作者GuiNobre
相关产品推荐
相关产品推荐

