需要一个功能,类似通过deepseek生成代码文件后,可以实现生成文件夹下的结构,并将目录下的html,css,js,php等文件代码按照结构汇总到一个markdown文件,请提供能实现的软件工具,或者通过脚本、之类实现的方案。
以下是一个完整的解决方案,通过Python脚本实现将指定文件夹下的代码文件汇总到一个Markdown文件中,并保持原始目录结构:
import os
import argparse
from pathlib import Path
def generate_code_markdown(root_dir, output_file, extensions):
"""
生成包含代码文件结构和内容的Markdown文档
:param root_dir: 要扫描的根目录
:param output_file: 输出的Markdown文件路径
:param extensions: 包含的文件扩展名列表
"""
root_path = Path(root_dir).resolve()
markdown_content = [f"# 代码结构汇总\n\n**根目录**: `{root_path}`\n"]
# 递归遍历目录
for current_path, dirs, files in os.walk(root_path):
# 排除隐藏文件夹 (如.git, .vscode等)
dirs[:] = [d for d in dirs if not d.startswith('.')]
# 计算当前目录的缩进层级
rel_path = Path(current_path).relative_to(root_path)
indent_level = len(rel_path.parts)
# 添加目录标题
if current_path != str(root_path):
markdown_content.append(f"\n{'#' * (indent_level + 1)} ? `{rel_path}`\n")
else:
markdown_content.append("\n## ? 根目录\n")
# 处理文件
for file in sorted(files):
file_path = Path(current_path) / file
# 跳过隐藏文件
if file.startswith('.'):
continue
# 检查文件扩展名
if file_path.suffix.lower() in extensions:
rel_file_path = file_path.relative_to(root_path)
markdown_content.append(f"\n### ? `{rel_file_path}`\n")
markdown_content.append(f"```{file_path.suffix[1:]}\n")
try:
# 读取文件内容并处理特殊字符
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# 转义Markdown特殊字符
content = content.replace('```', '\\`\\`\\`')
markdown_content.append(content)
except UnicodeDecodeError:
markdown_content.append(f"# 错误: 无法读取二进制文件\n")
except Exception as e:
markdown_content.append(f"# 读取错误: {str(e)}\n")
markdown_content.append("\n```\n")
# 写入输出文件
with open(output_file, 'w', encoding='utf-8') as md_file:
md_file.write(''.join(markdown_content))
print(f"✅ 生成完成! 共处理 {len(markdown_content)} 行内容")
print(f"? 输出文件: {Path(output_file).resolve()}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='将代码文件汇总到Markdown文档')
parser.add_argument('root_dir', help='要扫描的根目录路径')
parser.add_argument('-o', '--output', default='code_summary.md', help='输出Markdown文件名')
parser.add_argument('-e', '--extensions', nargs='+',
default=['.html', '.css', '.js', '.php', '.py', '.java', '.ts', '.vue'],
help='包含的文件扩展名列表')
args = parser.parse_args()
generate_code_markdown(
root_dir=args.root_dir,
output_file=args.output,
extensions=set(args.extensions) # 去重
)
导读
功能特点
- 保持目录结构:
- 使用层级标题表示目录嵌套关系
- 每个目录以 ? 图标标记
- 每个文件以 ? 图标标记
- 代码高亮:
- 自动检测文件类型
- 使用正确的Markdown代码块语法
- 支持多种编程语言(默认包含:html/css/js/php/py/java/ts/vue)
- 智能过滤:
- 自动跳过隐藏文件/目录(如.git, .vscode等)
- 只处理指定扩展名的文件
- 处理特殊字符转义(如代码中的
“`)
- 错误处理:
- 自动跳过二进制文件
- 捕获文件读取错误
- 支持UTF-8编码
使用方法
- 将脚本保存为
code_to_markdown.py
- 通过命令行运行:
# 基本用法 python code_to_markdown.py /path/to/your/project # 自定义输出文件名 python code_to_markdown.py /path/to/project -o project_summary.md # 自定义文件类型 python code_to_markdown.py /path/to/project -e .html .css .js .ts
输出示例
生成的Markdown文档结构如下:
# 代码结构汇总
**根目录**: `/projects/website`
## ? 根目录
### ? `index.html`
```html
<!DOCTYPE html>
<html>
...
</html>
</code></pre>
<h2>? src</h2>
<h3>? <code>src/main.js</code></h3>
<pre><code class="language-js line-numbers">function init() {
console.log("Hello");
}
...
</code></pre>
<h2>? styles</h2>
<h3>? <code>styles/main.css</code></h3>
<pre><code class="language-css line-numbers">body {
margin: 0;
...
}
</code></pre>
<pre><code class="line-numbers">### 替代工具推荐
1. **Tree命令 + 手写脚本**:
```bash
tree -I 'node_modules|.git' -sh -o dir_structure.txt
# 然后手动添加代码内容
- VS Code扩展:
- 在线工具:
- Codepile – 共享代码片段
- GitHub Gist – 代码片段管理
注意:对于大型项目,建议通过
-e
参数指定需要包含的文件类型,避免生成过大的Markdown文件。处理包含敏感信息的代码文件前,请确保做好安全审查。
在 DeepSeek 中使用 AI 辅助写代码时,高效提问能显著提升代码质量和开发效率。以下是我总结的 10 个关键方法和技巧,附实例说明:
? 一、核心原则:清晰、具体、结构化
1. 明确技术栈和需求
- ✅ 清晰说明语言、框架、库版本
- ❌ 模糊提问:”写个排序算法”
- ✅ 精准提问:
> “用 Python 3.10 实现非递归的快速排序,要求:
> – 输入:整数列表[3,1,4,1,5,9]
> – 输出:升序排序列表
> – 避免使用sorted()
内置函数”
2. 分步描述复杂需求
“`markdown
请用 React 18 + TypeScript 实现:
1. 用户表单组件:含姓名/邮箱验证
2. 提交后通过 Fetch API 发送到 `/api/submit`
3. 显示加载动画和成功/错误提示
“`
?️ 二、提升代码质量的技巧
3. 提供输入输出示例
“`python
# 输入示例
data = [{"id": 100, "value": 25}, {"id": 101, "value": 30}]
# 期望输出:将列表转为 {id: value} 的字典
# {100: 25, 101: 30}
“`
4. 指定边界条件和约束
“函数需处理:
– 空输入返回None
– 负数时抛出ValueError
– 时间复杂度 O(n)”
? 三、调试与优化技巧
5. 错误精准定位
- ✅ 带错误信息和上下文:
> “执行这段 Django 查询时报错:
>RelatedObjectDoesNotExist: User has no profile
> 模型如下:
>
“`python
> class Profile(models.Model):
> user = models.OneToOneField(User, on_delete=models.CASCADE)
> “`”
6. 要求逐步优化
“优化此 SQL 查询(当前执行时间 2s):
SELECT * FROM orders WHERE DATE(create_time) = '2023-10-01';
要求:
– 避免使用 DATE() 函数
– 添加索引建议”
? 四、高级技巧
7. 多文件项目结构
“`markdown
请设计 Flask 项目结构:
– app.py 主入口
– /templates/index.html 使用 Bootstrap 5
– /utils/helpers.py 包含日志工具函数
“`
8. 要求解释关键代码
“在生成的 Kafka 消费者代码中:
1. 解释auto.offset.reset
配置的作用
2. 说明如何保证至少一次消费语义”
⚠️ 五、避免常见误区
9. 避免开放式问题
- ❌ “如何开发一个电商网站?”
- ✅ “用 Next.js 14 实现购物车功能,要求:
- 本地存储临时数据
- 显示商品总价
- 支持数量增减”
10. 及时追问修正
“上段代码中
useEffect
缺少依赖项,请按 React 最佳实践修改并说明原因”
? 高效提问模板
【语言】Python 3.11
【需求】爬取豆瓣电影 Top250 的标题和评分
【特殊要求】
- 使用异步 aiohttp 请求
- 防反爬:随机 User-Agent + 2s 延时
- 数据存为 CSV
【示例输入/输出】
输入:URL = https://movie.douban.com/top250
输出:movies.csv 文件
掌握这些技巧后,DeepSeek 的代码生成准确率可提升 60%+ ?。关键点在于:用机器理解的精确语言描述人类需求。当遇到复杂问题时,拆解为多个原子任务逐步求解效果最佳。
需要我针对某个编程场景演示具体提问方式吗?欢迎提供您的需求案例!
针对 PHP 和 HTML 项目的高效提问技巧(专为 DeepSeek 优化),结合前后端交互特点整理以下方法论:
一、核心要素必含项
1. 明确技术栈组合
【PHP框架】Laravel 10 / 原生PHP
【前端】HTML5 + Tailwind CSS / Bootstrap 5
【数据库】MySQL 8 / PostgreSQL
【交互方式】AJAX / 传统表单提交
2. 描述功能流程
“需要实现用户评论功能:
1. HTML 表单(姓名/评论内容/验证码)
2. PHP 接收后过滤XSS攻击
3. 存入MySQL的comments
表
4. 页面异步刷新显示新评论”
二、高效技巧与示例
3. 提供HTML结构要求
<!-- 指定需要插入PHP代码的位置 -->
<div class="comments">
<!-- PHP循环输出评论 -->
<?php /* 在此生成评论列表 */ ?>
</div>
4. 定义数据格式
// 明确PHP需要处理的数据结构
$_POST = [
'name' => '张三',
'comment' => '测试内容<script>alert(1)</script>',
'captcha' => 'Abc12'
];
5. 安全要求显式声明
“PHP处理时需:
– 使用htmlspecialchars()
防XSS
– 用预处理语句防SQL注入
– 验证码会话校验”
三、典型场景提问模板
场景1:表单处理 + 数据存储
【需求】用户注册功能
【前端】
- Bootstrap 5 表单 (邮箱/密码/确认密码)
- 提交按钮触发AJAX
【后端】
- PHP验证:邮箱格式/密码强度/两次密码一致性
- 密码用`password_hash()`加密
- 错误返回JSON: {"status":"error","msg":"密码不一致"}
- 成功插入MySQL后发送欢迎邮件
【数据库表结构】
CREATE TABLE users (
id INT AUTO_INCREMENT,
email VARCHAR(255) UNIQUE,
password VARCHAR(255)
);
场景2:动态页面生成
【需求】从数据库生成产品列表页
【要求】
- PHP查询`products`表获取20条数据
- HTML表格显示(ID/名称/价格)
- 价格≥100的行添加class="text-danger"
- 分页参数:?page=2
【安全】
- 过滤`$_GET['page']`为整数
- 防SQL注入用预处理语句
四、调试技巧
6. 错误精准定位
“AJAX提交时PHP返回500错误,代码片段:
// 疑似问题行 stmt->bind_param("ss",_POST['email'], password_hash($_POST['password']));
错误日志:
Warning: bind_param() expects parameter 2 to be string, null given
”
7. 要求安全加固
“现有登录代码:
$user = query("SELECT * FROM users WHERE email='".$_POST['email']."'");
请改为预处理语句并增加:
– 登录失败延迟响应
– 会话固定攻击防护”
五、高级项目组织
8. 多文件协作
【文件结构】
- /public/index.php (前端入口)
- /src/Auth.php (登录处理类)
- /templates/header.html (公共头部)
【需求】
在header.html显示用户状态:
<?php /* 如何在此调用Auth::checkLogin()? */ ?>
9. 会话管理
“实现购物车功能:
1. PHP Session存储商品ID数组
2. AJAX按钮添加商品到Session
3. 页面显示实时数量徽章
4. 解决会话并发问题”
六、避免的陷阱
- ❌ 模糊提问:
“怎么用PHP做个登录?” - ✅ 高效提问:
“用原生PHP实现登录:- 密码加盐哈希存储
- 会话超时30分钟
- 记住我功能用安全Cookie”
实战案例模板
【项目类型】电子商务网站商品页
【技术栈】PHP 8.1 + MySQL + HTML/Bootstrap
【核心需求】
1. HTML显示商品详情(从`products`表按ID查询)
2. 「加入购物车」按钮触发AJAX
3. PHP验证库存后更新Session
4. 顶部导航栏实时显示购物车数量
【安全要求】
- 商品ID强制转为整数
- 库存不足返回JSON错误
- 会话ID再生机制
【示例SQL】
SELECT name, price, stock FROM products WHERE id = {商品ID}
高效提问黄金法则:
“像教新人开发一样描述需求” – 包含:
1. 用户操作流程
2. 数据流向说明
3. 安全边界条件
4. 期望的错误处理方式
需要我针对具体PHP/HTML功能(如:文件上传、支付接口、权限控制)提供定制化提问模板吗?欢迎描述您的项目场景!
发表第一篇评论