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

Win10运行Python MadLib生成器报WinError 3找不到文件问题求助

问题原因及解决方案

1. WinError 3路径不存在的原因

  • ./ 不是Linux专属语法,Windows系统也完全支持该相对路径写法,报错和这个语法无关
  • 第一个核心错误是大小写不匹配:你定义的类属性是大写的Path = "./MadLibGen",但后续调用时全部用了小写的cls.path/CreateaMadLib.path,Python对大小写敏感,根本取不到正确的路径值,自然会报路径不存在
  • 第二个常见问题是相对路径的基准问题:./对应的是你执行Python脚本时的命令行工作目录,不是脚本文件本身所在的目录,如果运行脚本时的工作目录和脚本存放目录不一致,也会找不到目标文件夹

2. 替换为绝对路径后出现空白屏的原因

  • 你的核心业务逻辑代码(从Temp_Name = Choose_A_MadLib_Temp()开始的几行)写在了Choose_A_MadLib_Temp函数的return Temp语句之后,return会直接结束函数运行,后面的代码永远不会被执行,程序启动后没有任何输出自然就是空白屏

3. 其他需要修正的代码错误

  • Choose_A_MadLib_Temp是类内部的无参方法,没有加@staticmethod装饰器,直接调用会报错
  • Build__A__Story方法定义时要求传入Word参数,但实际调用时没有传值,会触发参数缺失错误
  • Display_A_MadLib_Story方法里print(Story)的Story没有加self前缀,找不到变量会报错
  • Build__A__Story方法里的Word参数你全程没用到,可以直接删掉

修正后可运行的参考代码

import random
import json
import os


class CreateaMadLib:
    Path = "./MadLibGen"
    def __init__(self, Word_Desc, Temp):
        self.Temp = Temp
        self.Word_Desc = Word_Desc
        self.UserInput = []
        self.Story = None
        
        
    @classmethod
    def Get__From__Json(cls, Name, Path=None):
        if not Path:
            Path = cls.Path
        fpath = os.path.join(Path, Name)
        with open(fpath, "r", encoding="utf-8") as F:
            Data = json.load(F)
            Create_a_MadLib = cls(**Data)
        return Create_a_MadLib      

    def Get__The__Words__From__TheUser(self):
        print("Please enter the words that you want: ")
        for desc in self.Word_Desc:
            UI = input(desc + " ")
            self.UserInput.append(UI)
        return self.UserInput


    def Build__A__Story(self):
        self.Story = self.Temp.format(*self.UserInput)
        return self.Story
        
    def Display_A_MadLib_Story(self):
        print(self.Story)
    
    @staticmethod
    def Choose_A_MadLib_Temp():
        print("Please choose the Mad Lib that you want from the list:")
        MadLibGen = os.listdir(CreateaMadLib.Path)
        Temp = input(str(MadLibGen) + " ")
        return Temp
        

# 主逻辑移到函数外部
if __name__ == "__main__":
    Temp_Name = CreateaMadLib.Choose_A_MadLib_Temp()
    #Temp_Name = "ArcadeMadLib.json"
    Create_a_MadLib = CreateaMadLib.Get__From__Json(Temp_Name)
    Word = Create_a_MadLib.Get__The__Words__From__TheUser()
    Story = Create_a_MadLib.Build__A__Story()
    Create_a_MadLib.Display_A_MadLib_Story()

如果还是想用绝对路径,直接把Path = "./MadLibGen"改成你对应的绝对路径即可,路径分隔符用/或者\\Windows都可以正常识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:54:01