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

Python函数间变量传递问题:average_list2未定义报错排查

问题原因及优化方案

错误原因

  • 变量作用域限制:average_list2是readingAverage函数内部的局部变量,函数外部无法直接访问它,这就是出现“average_list2未定义”错误的核心原因。
  • 未接收函数返回值:调用readingAverage(filepath)时,没有保存函数生成的结果,后续自然无法将其传递给writingAverage使用。

修复及优化后的代码

import csv
import os

path = '//haeo1ims1005/controlsprojects$/BOD INFO/ROBOT DATA/AXIS/137'
os.chdir(path)

def readingAverage(filepath):
    with open(filepath, 'r') as f:
        # 读取指定行并拼接
        average_lines = f.readlines()[46:53]
        average_join = '\n'.join(average_lines)
        
        # 简化列表生成逻辑,直接通过字面量创建列表
        average_list = [
            average_join[5:16],
            average_join[46:57],
            average_join[87:98],
            average_join[128:139],
            average_join[169:180],
            average_join[210:221],
            average_join[251:262]
        ]
        average_list2 = [average_list]
        return average_list2

def writingAverage(average_data):
    # 添加newline=''避免CSV写入时出现多余空行
    with open('C:/Users/DunningJ3/Desktop/practice.txt', 'a', newline='') as wf:
        writer = csv.writer(wf)
        writer.writerows(average_data)

# 主执行逻辑
for file in os.listdir():
    if file.endswith(".ls"):
        # 用os.path.join规范路径拼接,避免系统兼容问题
        filepath = os.path.join(path, file)
        data = readingAverage(filepath)
        writingAverage(data)

关键优化点

  • 修正作用域问题:让readingAverage函数返回生成的average_list2,在主逻辑中接收返回值后直接传递给writingAverage。
  • 简化代码结构:将多次append操作改为直接用列表字面量生成,代码更简洁易读。
  • 路径处理优化:使用os.path.join拼接文件路径,避免不同操作系统下的路径分隔符错误。
  • CSV写入优化:打开文件时添加newline=''参数,解决CSV写入时的空行问题;根据数据结构选择writerows适配嵌套列表的写入需求。
  • 清理无用依赖:移除未使用的islice导入,减少冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:15:39