You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Thonny运行Python代码遇AttributeError: 'module'无check_output属性

解决subprocess.check_output不存在的AttributeError问题

你的问题根源在于:你使用的Python版本是2.6,而subprocess.check_output是Python2.7才新增的方法,2.6版本的subprocess模块根本没有这个属性。更关键的是,你自己定义的check_output函数内部还在调用subprocess.check_output,这直接触发了报错。

下面是修正后的代码,完全基于Python2.6的subprocess.Popen实现多管道命令的输出获取:

import subprocess

def check_output(cmd):
    """实现Python2.6下的多管道命令输出获取"""
    process_list = []
    cmd_list = cmd.strip().split("|")
    
    for i, sub_cmd in enumerate(cmd_list):
        stdin_arg = None
        if i > 0:
            # 将前一个进程的stdout作为当前进程的stdin
            stdin_arg = process_list[i-1].stdout
        
        # 使用Popen创建子进程,不调用不存在的check_output
        proc = subprocess.Popen(sub_cmd.strip(), 
                               stdin=stdin_arg, 
                               stdout=subprocess.PIPE, 
                               shell=True)
        process_list.append(proc)
    
    if not process_list:
        return ''
    
    # 等待最后一个进程执行完成并获取输出
    output, _ = process_list[-1].communicate()
    return output

print(check_output('ls -la /var | grep log'))

修正说明:

  • 移除了对subprocess.check_output的调用,改用subprocess.Popen直接创建进程
  • 逐个处理管道拆分后的命令,正确传递前后进程的输入输出流
  • 通过最后一个进程的communicate()方法获取最终输出,确保进程执行完成

内容的提问来源于stack exchange,提问作者Pratik Sawant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 02:25:54