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

如何在Python类中通过循环初始化处理多个Excel文件?

解决思路与代码修改

首先修正原代码里的两处问题:

  • 实例方法something缺少self参数,这是Python类实例方法的必填参数
  • __init__硬编码了文件名,无法动态传入不同文件

方案1:每个TSP实例对应单个文件,外部循环处理(推荐,符合单一职责)

把文件名作为参数传给__init__,让每个实例负责一个文件的处理,然后在外部循环遍历文件列表,逐个创建实例并执行操作。

修改后的代码:

import pandas as pd

class TSP():
    def __init__(self, file_path):
        # 把文件名作为参数传入,动态读取不同文件
        df = pd.read_excel(file_path)
        self.cities = df.copy()
    
    def something(self):
        # 这里写你的业务逻辑,比如处理self.cities
        print(f"处理文件完成,共{len(self.cities)}条数据")

# 定义要处理的文件列表
file_list = [
    'order data1.xlsx',
    'order data2.xlsx',
    'order data3.xlsx'
]

# 循环处理每个文件
for file in file_list:
    tsp = TSP(file)
    tsp.something()

方案2:在类中封装批量处理的类方法

如果想把循环逻辑封装在类内部,可以添加一个类方法,接收文件列表后内部循环处理:

import pandas as pd

class TSP():
    def __init__(self, file_path):
        df = pd.read_excel(file_path)
        self.cities = df.copy()
    
    def something(self):
        print(f"处理文件完成,共{len(self.cities)}条数据")
    
    @classmethod
    def batch_process(cls, file_list):
        # 类方法内部循环处理每个文件
        for file in file_list:
            tsp_instance = cls(file)
            tsp_instance.something()

# 调用批量处理方法
TSP.batch_process([
    'order data1.xlsx',
    'order data2.xlsx',
    'order data3.xlsx'
])

额外建议:添加异常处理

避免因文件不存在、格式错误导致程序崩溃,可以在读取文件时加异常捕获:

def __init__(self, file_path):
    try:
        df = pd.read_excel(file_path)
        self.cities = df.copy()
    except FileNotFoundError:
        print(f"错误:未找到文件 {file_path}")
        self.cities = None
    except Exception as e:
        print(f"读取文件 {file_path} 失败:{str(e)}")
        self.cities = None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:20:37