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

Python从零构建虚拟目录结构及终端导航游戏开发技术咨询

用Python构建虚拟目录结构(适配你的终端游戏)

Hey Max! 很高兴你在做这么有意思的游戏项目——用终端操作找病毒,这个点子超棒,肯定能帮你快速熟悉Python的核心逻辑!下面我一步步教你从零构建虚拟目录,顺便回答你的问题。

一、核心思路:用字典模拟目录结构

真实的文件系统本质就是嵌套的层级结构,用Python的字典可以完美模拟:

  • 字典的键表示文件/文件夹名称
  • 如果值是另一个字典,那就是子文件夹;如果是字符串/特殊标记,就代表文件(比如病毒文件可以标记成*VIRUS*)

二、完整代码实现(带导航、查看功能)

我给你写了一个简化但实用的版本,你可以直接用到游戏里,还能根据需求扩展:

# 定义虚拟目录结构(可以随便加更多文件夹/文件)
virtual_fs = {
    "home": {
        "max": {
            "documents": {
                "school_notes.txt": "Math formulas...",
                "secret_plan.md": "How to beat the game"
            },
            "games": {
                "my_game_save.dat": "Player level: 5",
                "*virus.exe*": "DANGER: This is the virus!"  # 你的目标病毒文件
            },
            "desktop": {
                "todo.txt": "Buy milk, finish game project"
            }
        }
    },
    "system": {
        "logs": {
            "boot.log": "System started at 10:00 AM"
        },
        "config": {
            "settings.ini": "Theme: dark mode"
        }
    }
}

# 跟踪当前所在路径(初始在根目录)
current_path = []

def pwd():
    """显示当前路径"""
    return "/" + "/".join(current_path) if current_path else "/"

def ls():
    """列出当前目录的内容"""
    current_dir = virtual_fs
    for folder in current_path:
        current_dir = current_dir[folder]
    
    print("\n当前目录内容:")
    for item in current_dir.keys():
        # 区分文件夹和文件(文件夹是字典,文件是其他类型)
        if isinstance(current_dir[item], dict):
            print(f"📁 {item}")
        else:
            print(f"📄 {item}")

def cd(target):
    """导航到目标目录"""
    global current_path
    current_dir = virtual_fs
    # 先拿到当前目录的完整层级
    for folder in current_path:
        current_dir = current_dir[folder]
    
    if target == "..":
        # 返回上一级目录
        if current_path:
            current_path.pop()
        else:
            print("已经在根目录啦!")
    elif target in current_dir and isinstance(current_dir[target], dict):
        # 进入子文件夹
        current_path.append(target)
    else:
        print(f"错误:'{target}' 不是一个有效的文件夹!")

# 测试一下终端交互
print("欢迎来到虚拟电脑!输入命令操作:pwd(看路径)、ls(看内容)、cd <文件夹名>(导航)、exit(退出)")
while True:
    command = input(f"\n{pwd()} $ ").strip().split()
    if not command:
        continue
    cmd = command[0].lower()
    if cmd == "exit":
        print("再见!")
        break
    elif cmd == "pwd":
        print(pwd())
    elif cmd == "ls":
        ls()
    elif cmd == "cd":
        if len(command) < 2:
            print("请输入目标文件夹,比如:cd home")
        else:
            cd(command[1])
    else:
        print(f"未知命令:{cmd}")

三、代码解释(方便你修改扩展)

  • virtual_fs:你可以随便添加更多文件夹和文件,病毒文件可以加特殊标记方便识别
  • current_path:用列表记录当前所在的层级,比如["home", "max", "games"]就代表路径/home/max/games
  • 三个核心函数:pwd()显示路径,ls()列出内容,cd()导航目录,完全模拟真实终端的逻辑
  • 最后是一个简单的交互循环,玩家可以输入命令操作

四、关于「是否已有解答」的问题

Stack Exchange(包括Stack Overflow)上确实有不少关于虚拟文件系统的讨论,比如用类来实现更复杂的权限、文件读写功能,但针对你这种游戏里的简化终端场景,上面的代码是更贴合需求的轻量版本——你不需要完整的文件系统,只需要核心的导航和文件识别功能,所以这个方案是专门为你的游戏定制的。

你可以根据游戏需求继续扩展:比如添加rm命令删除病毒,或者隐藏一些秘密文件夹需要特定命令才能访问,这些都可以基于这个基础结构修改~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:19:49