首页 > 其他分享 >code2markdown_macbook

code2markdown_macbook

时间:2023-02-12 12:11:26浏览次数:42  
标签:index code2markdown re file path root macbook dir

/Users/song/Code/script_python/code2md/main.py


#!/usr/bin/env python3

import os
import re
import shutil

import easygui
from easygui import *

from pathlib import Path


class User(EgStore):
    def __init__(self, filename):
        self.path = ''
        EgStore.__init__(self, filename)


def get_dir_path_gui():
    # 创建存储对象
    user = User("settings.txt")
    # 取出以前保存的文件
    user.restore()
    file_path = easygui.diropenbox(default=user.path)
    user.path = file_path
    user.store()
    return file_path


def get_root_dir(dir_path):
    file_list = os.listdir(dir_path)
    path_list = []
    root_file_list = []
    for file in file_list:
        print(file)
        # 过滤隐藏文件
        if file.startswith('.'):
            continue
        # 过滤所有的文件
        is_file = re.findall(r'\.[^.\\/:*?"<>|\r\n]+$', file)
        if len(is_file):
            # 反向过滤,后缀文件
            res_abort = re.findall(re.compile(
                r'(\.json|d\.ts|config\.ts|config\.js)$'), file)
            if res_abort:
                continue
            # 保留根文件夹的(\.py|vue|js|ts)$ 结尾的文件
            res_save = re.findall(re.compile(r'(\.py|vue|js|ts|html|txt)$'), file)
            if len(res_save):
                root_file_list.append(file)
            continue
        # 过滤node_modules
        res_abort = re.findall(re.compile(
            r'(__pycache__|venv|build|dist|node_modules|public|LICENSE)'), file)
        if len(res_abort):
            continue
        # 拼接成路径
        file_path = os.path.join(dir_path, file)
        path_list.append(file_path)
    return path_list, root_file_list


def get_deep_dirs(path):
    file_path = []
    for root, dirs, files in os.walk(path):

        # 过滤不符合的文件夹------------------------------------------------------------------------
        del_dir_index = []
        for i, dir in enumerate(dirs):
            # 过滤隐藏文件
            if dir.startswith('.'):
                del_dir_index.append(i)
            # 过滤掉所有不符合的文件夹
            res_abort = re.findall(re.compile(
                r'(__pycache__|venv|build|dist|node_modules|public|LICENSE|assets)'), dir)
            if len(res_abort):
                del_dir_index.append(i)

        # 去重,排序,过滤文件夹
        del_dir_index = list(set(del_dir_index))
        del_dir_index.sort()
        for counter, index in enumerate(del_dir_index):
            index = index - counter
            dirs.pop(index)

        # 过滤不符合的文件-----------------------------------------------------------------------------
        del_file_index = []
        for i, file in enumerate(files):
            # 过滤隐藏文件
            # (\.gitignore)|(\.prettierrc)
            if file.startswith('.'):
                del_file_index.append(i)
            # 过滤掉所有不符合的文件
            res_abort = re.findall(re.compile(
                r'(\.json|\.d\.ts|\.lock|\.config\.ts|\.config\.js|\.png|\.woff2|\.ttf|\.woff|\.css|README\.md|\.toml|swagger-ui-bundle.js)$'),
                file)
            if len(res_abort):
                del_file_index.append(i)

        # 去重排序,过滤文件
        del_file_index = list(set(del_file_index))
        del_file_index.sort()
        for counter, index in enumerate(del_file_index):
            index = index - counter
            files.pop(index)

        # 筛选所有符合后缀的文件------------------------------------------------------------------------
        for file in files:
            # 正向过滤含有(\.py|vue|js|ts)$ 结尾的文件
            res_save = re.findall(re.compile(r'(\.py|vue|js|ts|html)$'), file)
            if len(res_save):
                file_path.append(os.path.join(root, file))
    return file_path


def readcode_writemd(file_path, root_path):
    suffix = re.findall(r'\.[^.\\/:*?"<>|\r\n]+$', file_path)
    if len(suffix):
        suffix = suffix[0][1:]
    with open(file_path, "r", encoding='utf-8') as f:  # 打开文件
        head_line = f.readline()
        rest_line = f.read()
        write2md(head_line, head_line + rest_line,
                 suffix, file_path, root_path)


def write2md(head, content, suffix, file_path, root_path):
    with open(root_path + '/NOTE.md', "a", encoding='utf-8') as f:  # 打开文件
        f.write(f"# `{file_path}`\n\n")
        # f.write(f"# {head}\n\n")
        f.write(f"```{suffix}\n")
        f.write(content)
        f.write(f"```\n")


if __name__ == '__main__':
    root_path = get_dir_path_gui()
    md_file = os.path.join(root_path, '====NOTE.md')

    # 清楚上一次的文件
    if os.path.exists(md_file):
        os.remove(md_file)

    file_path_list = get_deep_dirs(root_path)
    for file_path in file_path_list:
        print(file_path)
        readcode_writemd(file_path, root_path)
    print('!!!complete!!!')
    os.system('open '+root_path)

标签:index,code2markdown,re,file,path,root,macbook,dir
From: https://www.cnblogs.com/zhuoss/p/17113603.html

相关文章

  • ax200装完后显示找不到wifi网络_Macbook升级Mac OS 10.15 Catalina后WiFi失效无法连接
    在更新了最新的MacOS10.15.4后wifi失效情况依然存在,而且值得一提的是,如果使用了我提及的方法3在先前的10.15版本中修复了wifi问题,那么当你通过Apple的OTA更新到新版本时,w......
  • macbook 外接windows键盘 常规改键 vim规则 hhkb. 不需要第三方软件
    改键图大小写切换键,基本用不到,所以改成ctrl键,这个和hhkb的设计正好原来的control键,可改可不改,其实保留更好,这样在mac中使用快捷键比较方便,如果有经常使用大写字......
  • Windows和MacBook等设备的文件共享(局域网)
    Windows和MacBook等设备的文件共享(局域网)背景平时学习的时候,我是用两个不同系统的设备,第一个是我的Macbook(聊微信。。),第二个是实验室的Windows台式机(学习,嘿嘿)。但是经常......
  • macbook pro更换三星EVO 970 PLUS教程2020年
    macbookpro更换三星EVO970PLUS教程2020年1.买个转接头2.买硬盘三星EVO970PLUS3.买螺丝刀,螺丝刀最好是网上一起买,苹果的那个螺丝刀很难找4.拆机6.下载镜像做USB启动盘8.......
  • MacBook m1 16g+1t使用体验
    入手这台mac快两个月了,是时候总结一下了拿到它的那一刻,我真的快激动疯了,好久没有那么激动的时刻,我轻轻抚摸,虽然是二手的电脑,但是它的身上依旧有一股电子产品特有的......
  • Macbook M2 安装PS遇到的问题及安装教程
    1、无法打开文件解决办法:打开任何来源  https://www.cnblogs.com/wy5132/p/16992779.html2、报错error解决办法一:终端:输入sudoxattr-r-dcom.apple.quarantine......
  • Macbook M2删除ACCFinderBundleLoader
    进入该文件:(这个目录每个人的电脑可能有点区别)folders下面不一定是37。(像我的电脑就是80)(可以使用ls查看文件下的所有文件)cd/private/var/folders/37/txl0523d74bgps8t0j......
  • 疯狂踩坑! ARM架构下的MACBOOK安装XDEBUG配合PHPSTROM完成调试环境配置
    先说结论,俩集成环境我都试了试,phpstudy在MAC上跟开玩笑一样,我实在不好说。于是决定自己安装个,毕竟还有神器brew利用brew安装PHP7.2首先,PHP7.2不受支持,已经被移除了。......
  • Macbook M2关闭spI
    如何查看电脑的SIP状态呢? 1、打开终端,输入命令csrutilstatus然后按回车;已打开SystemIntegrityProtectionstatus:enabled. 已关闭SystemIntegrityProtecti......
  • MacBook M2-打开任何来源
    1、打开终端:输入sudospctl--master-disable2、输入密码3、打开系统设置--隐私与安全性:增加【任何来源】选项  ......