python遍历文件夹下所有内容,生成xmind脑图

一、安装依赖xmind

bash 复制代码
pip3 install xmind

二、生成xmind文件

python 复制代码
import xmind
import os

def scan_folder_to_xmind(folder_path, output_path):
    workbook = xmind.load(output_path)  # 创建或加载XMind文件
    sheet = workbook.getPrimarySheet()  # 获取主工作表
    root_topic = sheet.getRootTopic()
    root_topic.setTitle(os.path.basename(folder_path))
    
    def add_folder_contents(parent_topic, current_path):
        items = os.listdir(current_path)
        for item in items:
            item_path = os.path.join(current_path, item)
            if os.path.isdir(item_path):
                folder_topic = parent_topic.addSubTopic()
                folder_topic.setTitle(f"📁 {item}")
                add_folder_contents(folder_topic, item_path)
            else:
                file_topic = parent_topic.addSubTopic()
                file_topic.setTitle(f"📄 {item}")
    
    add_folder_contents(root_topic, folder_path)
    xmind.save(workbook, output_path)  # 保存文件
    print(f"✅ 思维导图已生成: {output_path}")

# 使用示例
scan_folder_to_xmind('/path/to/folder', 'output.xmind')

三、问题

上面的output.xmind通过Xmind应用程序,无法正常打开。

四、原因

  • 文件格式不兼容‌:生成的文件可能是 XMind 8 格式,而您使用的是 XMind 2020 或更高版本,导致无法打开。
  • 缺少关键文件‌:XMind 2020+ 需要 META-INF/manifest.xml 文件,而生成的文件可能缺失此文件。

五、修复文件结构

为了兼容 XMind 2020+,需要修改文件结构

python 复制代码
import zipfile
import os

def fix_xmind_format(file_path):
    # 修改后缀为zip
    zip_path = file_path + '.zip'
    os.rename(file_path, zip_path)
    
    # 解压文件
    with zipfile.ZipFile(zip_path, 'r') as zip_ref:
        zip_ref.extractall(os.path.splitext(zip_path)[0])
    
    # 添加META-INF/manifest.xml
    manifest_content = """<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns="http://www.xmind.net/manifest">
    <version>1.0</version>
</manifest>"""
    manifest_path = os.path.join(os.path.splitext(zip_path)[0], 'META-INF', 'manifest.xml')
    os.makedirs(os.path.dirname(manifest_path), exist_ok=True)
    with open(manifest_path, 'w', encoding='utf-8') as f:
        f.write(manifest_content)
    
    # 重新压缩为zip
    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zip_ref:
        for root, dirs, files in os.walk(os.path.splitext(zip_path)[0]):
            for file in files:
                zip_ref.write(os.path.join(root, file), os.path.relpath(os.path.join(root, file), os.path.splitext(zip_path)[0]))
    
    # 恢复后缀为xmind
    os.remove(file_path)
    os.rename(zip_path, file_path)
    print(f"✅ 文件格式已修复: {file_path}")

# 使用示例
fix_xmind_format('output.xmind')

最后,通过xmind,正常打开目录结构

相关推荐
love530love4 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
遇事不決洛必達4 小时前
【Python基础】GIL 锁是什么及其对爬虫的影响
爬虫·python·线程·进程·gil锁
CryptoPP5 小时前
快速对接东京证券交易所API数据:实战指南与代码示例
开发语言·人工智能·windows·python·信息可视化·区块链
探物 AI5 小时前
把 MambaOut 塞进 YOLOv11:会有什么样的反应
python·yolo·计算机视觉
如竟没有火炬6 小时前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
阳区欠6 小时前
【LangChain】LLM基础介绍
开发语言·python·langchain
Cosolar6 小时前
保姆级 CrewAI 教程:从零构建多智能体协作系统
人工智能·python·架构
GDAL6 小时前
使用 uv 管理 Python 版本
python·uv·版本
真实的菜6 小时前
Redis 从入门到精通(十二):典型业务场景实战 —— 排行榜、限流器、秒杀系统、Session 共享
数据库·redis·python
cup117 小时前
[开源] Meta Assistant / 告别命令行,我为一堆 Python 脚本做了一个 Windows 任务栏的“家”
windows·python·工具·nuitka·脚本运行