如何从主文件调用其他文件的类方法?卡牌图片列表读取调试
解决方案
一、修复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属性获取收集到的所有卡牌路径,打印验证数量和具体路径
三、运行验证
- 将卡牌GIF文件放入指定的文件夹(支持子目录分类)
- 修改
main.py中的card_folder为你的实际文件夹路径 - 运行
main.py,控制台会输出所有收集到的GIF路径,以及总数目,确认是否为52张
内容的提问来源于stack exchange,提问作者Keithan
相关产品推荐
相关产品推荐

