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

如何从主文件调用其他文件的类方法?卡牌图片列表读取调试

解决方案

一、修复Card类的readFile方法(收集卡牌路径到deck列表)

修改card.py,实现将指定文件夹下的所有GIF卡牌路径存入deck列表:

import os

class Card:
    def __init__(self, deck_folder_path):
        self._deck_folder = deck_folder_path  # 存储目标卡牌文件夹路径
        self.deck = []  # 初始化存储卡牌路径的列表
        self.readFile()

    def readFile(self):
        # 获取目标文件夹的绝对路径
        abs_deck_folder = os.path.abspath(self._deck_folder)
        
        # 遍历文件夹下的所有条目(文件/子目录)
        for entry in os.scandir(abs_deck_folder):
            if entry.is_file() and entry.name.endswith(".gif"):
                # 如果是GIF文件,添加绝对路径到deck列表
                self.deck.append(entry.path)
            elif entry.is_dir():
                # 如果是子目录,递归遍历其中的GIF文件
                for sub_entry in os.scandir(entry.path):
                    if sub_entry.is_file() and sub_entry.name.endswith(".gif"):
                        self.deck.append(sub_entry.path)

关键修改说明:

  • __init__方法中初始化self.deck空列表,用于存储卡牌路径
  • readFile方法移除多余的deckFile参数,使用实例变量self._deck_folder指定目标文件夹
  • 使用os.scandir替代os.listdir,更高效且能直接获取文件属性
  • 支持遍历目标文件夹及其子目录下的所有GIF文件,将绝对路径存入deck列表

二、修复main.py的调用逻辑

修改main.py,正确导入Card类并验证路径收集结果:

from card import Card  # 注意模块名是小写的card,对应文件名card.py

def main():
    # 替换为你的卡牌文件夹路径(可以是相对路径或绝对路径)
    card_folder = "path/to/your/card/gifs"
    # 实例化Card对象,传入卡牌文件夹路径
    card_deck = Card(card_folder)
    # 打印deck列表,验证是否成功收集52张卡牌路径
    print("收集到的卡牌路径:")
    for idx, path in enumerate(card_deck.deck, 1):
        print(f"{idx}. {path}")
    print(f"\n总共收集到{len(card_deck.deck)}张卡牌")

if __name__ == '__main__':
    main()

调用逻辑说明:

  • 从card模块导入Card类(模块名与文件名一致,小写)
  • 实例化Card对象时传入卡牌文件夹的实际路径
  • 通过访问实例的card_deck.deck属性获取收集到的所有卡牌路径,打印验证数量和具体路径

三、运行验证

  1. 将卡牌GIF文件放入指定的文件夹(支持子目录分类)
  2. 修改main.py中的card_folder为你的实际文件夹路径
  3. 运行main.py,控制台会输出所有收集到的GIF路径,以及总数目,确认是否为52张

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:05:11