前言
文件的存储重要性不言而喻,一般是存放在网盘。在网盘里面可以很清晰地看出目录的层次。但有时候我们想导出特定的文件的目录(层次),发现并没有现成的解决方案。我写提示词,问了AI相关方法,并结合代码(毕竟是程序员),做了一个提取并保存目录的程序案例,在此和大家分享实现过程。
一、提问和AI回答
1、提示词
我的百度网盘中的文件有很多子文件夹,我想快捷提取(导出)这些文件的命名,生成一个索引,可以如何实现?
2、AI回答
(一共三种,我只试了第一种,其他两种自行尝试)
方案一
- 使用百度网盘 PC 客户端和 Navicat Premium2
- 找到数据库文件:右键点击百度云客户端快捷方式,选择 “打开文件位置(XP 不适用)”,或点属性查看快捷方式目标,一般在 “C:\Users\Administrator\AppData\Roaming\baidu\BaiduYunGuanjia\” 位置。打开后进入 user 目录,再打开那个一长串的文件夹,找到 “BaiduYunCacheFileV0.db” 文件,这个文件存放着网盘的详细信息。
- 连接数据库:打开 Navicat Premium,点击连接,选择 SQLite,在常规选项中选择现有数据库文件,浏览并选择刚才找到的 “BaiduYunCacheFileV0.db” 文件,点击 “连接测试”,显示 “连接成功” 后点击确定回到主界面。
- 查看并导出数据:双击建立的百度云管家数据库,出现 main,再双击 main,点开表,双击 cache_file 表,这里面是网盘上的所有目录结构信息,其中 parent_path 是路径,server_filename 是文件名。点击导出按钮,可以选择全部导出或导出自己需要的部分。
方案二
- 使用网页版百度网盘4
- 登录并进入设置:打开百度网盘网页版,登录账号后,在页面右上角找到 “我的” 选项,点击进入个人中心,然后找到 “设置” 选项并点击进入。
- 选择导出格式并导出:在设置页面中找到 “导出” 选项,选择导出为 HTML 格式,并点击开始按钮开始导出。等待一段时间后,导出的 HTML 文件就会保存在指定位置,该文件包含了百度网盘的目录结构信息,可从中提取文件命名。
方案三
- 使用第三方工具 mybaiduexport.exe6
- 运行程序:双击运行 mybaiduexport.exe 程序。
- 选择文件与保存地址:程序启动后,选择 DB 文件,即 “BaiduYunCacheFileV0.db” 文件的位置,默认在百度网盘安装目录下的 /users 文件夹中。然后选择一个保存地址,用于保存导出的文件列表。
- 设置相关参数并生成:设置 “要导出的文件的深度”,即希望导出的目录层级深度。点击 “生成文件列表” 按钮后,程序将解析 DB 文件,提取出百度网盘上的文件列表信息,并保存到指定路径。
3、常用的筛选(Navicat Premium)
- 按特定字段值筛选1
- 打开表和筛选界面:打开数据库,双击打开需要查询的表,点击 “筛选” 按钮,出现筛选选项。
- 选择筛选字段:点击 “按这里添加”,从下拉菜单中选择需要查询的字段。
- 设置筛选条件:点击 “包含”,从下拉菜单中选择查询条件,如 “等于”“不等于”“大于”“小于”“包含”“不包含” 等。然后在输入框中输入需要查询的具体值,点击右下角的 “应用” 按钮,最后按 F5 刷新,即可显示筛选后的数据。
- 按多个条件筛选
- 添加多个筛选条件:按照上述按特定字段值筛选的步骤,先添加一个筛选条件。若还需添加其他条件,可再次点击 “按这里添加”,继续选择字段和设置条件。多个条件之间默认是 “与” 的关系,即同时满足多个条件的数据才会被筛选出来。
- 调整条件逻辑关系:如果需要改变条件之间的逻辑关系,如 “或” 关系,可以点击筛选条件之间的 “与”“或” 按钮进行切换。
- 按日期范围筛选
- 选择日期字段:在 “按这里添加” 的下拉菜单中选择日期类型的字段。
- 设置日期范围:点击 “包含”,选择 “在范围内” 或 “不在范围内” 等条件。然后在弹出的日期选择器中选择起始日期和结束日期,点击 “应用” 并按 F5 刷新,即可筛选出指定日期范围内的数据。
- 按空值或非空值筛选
- 选择字段:点击 “按这里添加”,选择要筛选的字段。
- 设置筛选条件:点击 “包含”,选择 “为空” 或 “不为空” 条件,点击 “应用” 并按 F5 刷新,可筛选出该字段为空值或非空值的数据。
“筛选-条件书写、增加条件-应用 "
二、结合代码
1、提示词
先不管筛选条件,如果我想将方法1的使用情况用编程快速且方便实现,推荐用哪个编程语言,以及告诉我如何实现。
2、AI回答
import sqlite3
import csv
def generate_baidu_cloud_index(db_path, output_path):
try:
# 连接到 SQLite 数据库
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 查询文件信息
query = "SELECT parent_path, server_filename FROM cache_file"
cursor.execute(query)
rows = cursor.fetchall()
# 保存结果到 CSV 文件
with open(output_path, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
# 写入表头
writer.writerow(['parent_path', 'server_filename'])
# 写入数据
writer.writerows(rows)
print(f"索引文件已成功保存到 {output_path}")
except sqlite3.Error as e:
print(f"数据库操作出错: {e}")
except Exception as e:
print(f"发生未知错误: {e}")
finally:
if conn:
conn.close()
if __name__ == "__main__":
# 替换为实际的数据库文件路径
db_file_path = "C:\\Users\\Administrator\\AppData\\Roaming\\baidu\\BaiduYunGuanjia\\user\\your_folder\\BaiduYunCacheFileV0.db"
# 替换为你想要保存索引文件的路径
output_file_path = "baidu_cloud_index.csv"
generate_baidu_cloud_index(db_file_path, output_file_path)
3、一些优化
一开始AI给出的代码,文件的位置以及输出文件的位置是写死的,需要自己手动在代码中改写。这次简化成让用户自行自行输入(并且保留保存的默认位置)
1)提示词
做一些优化,进入程序的时候先提示用户输入实际的百度网盘数据库文件路径,然后再提示输入保存索引文件的路径(如果不输入则默认保存在桌面上)。
2)AI回答
import sqlite3
import csv
import os
def generate_baidu_cloud_index(db_path, output_path):
try:
# 连接到 SQLite 数据库
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 查询文件信息
query = "SELECT parent_path, server_filename FROM cache_file"
cursor.execute(query)
rows = cursor.fetchall()
# 保存结果到 CSV 文件
with open(output_path, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
# 写入表头
writer.writerow(['parent_path', 'server_filename'])
# 写入数据
writer.writerows(rows)
print(f"索引文件已成功保存到 {output_path}")
except sqlite3.Error as e:
print(f"数据库操作出错: {e}")
except Exception as e:
print(f"发生未知错误: {e}")
finally:
if conn:
conn.close()
if __name__ == "__main__":
# 提示用户输入百度网盘数据库文件路径
db_file_path = input("请输入百度网盘数据库文件(BaiduYunCacheFileV0.db)的路径: ")
# 提示用户输入保存索引文件的路径
output_file_path = input("请输入要保存索引文件的路径(留空则默认保存到桌面): ")
if not output_file_path:
# 获取桌面路径
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
output_file_path = os.path.join(desktop_path, "baidu_cloud_index.csv")
generate_baidu_cloud_index(db_file_path, output_file_path)
3)一些提示(点到为止)
优化或者可能存在的问题
- 编码问题(乱码)
- 筛选功能(根据上述思路,写提示词让AI生成,然后自行调试)
三、效果演示
PS:我做的版本增加了筛选功能。
打开生成后的csv文件。
四、常见问题
- 运行程序的python版本?
-python3
- 百度网盘数据库文件(BaiduYunCacheFileV0.db)的路径
前面的AI回答中有答案,自行查找。
- 对路径名的输入有什么要求?
有多级目录就以“/子文件夹”的形式补充
比如这是你的网盘目录
- 你想查找25考研的英语学习的文件
那么你就输入:25考研/英语学习
- 如果你想查找编程文件夹下的文件
那么你就输入:编程
五、总结
案例就到此结束了,欢迎提问和交流,peace~