pathlib / os / pandas 与第三方提取库
面向 PDF Markdown 提取场景一、pathlib—— 面向对象的路径操作(现代首选)pathlib把路径当成对象而不是字符串,链式调用更直观。Path是 Python 3.4 开始官方推荐的文件路径处理方式,比传统的os.path更直观、更优雅。对提取 PDF / Markdown这种场景,它负责定位和读取文件。1. 创建路径对象(支持/拼接,超级方便)frompathlibimportPath# / 运算符直接拼接,不用再写 os.path.joinpPath(D:/test)/dm_projects/data.csvprint(f路径:{p})2. 提取文件名、后缀、纯文件名(提取场景高频用到)print(f完整文件名:{p.name})# data.csvprint(f后缀:{p.suffix})# .csvprint(f纯文件名(无后缀):{p.stem})# data --- 过滤/重命名时核心print(f父目录:{p.parent})# D:/test/dm_projects3. 判断存在性与类型print(f存在吗?{p.exists()})print(f是文件吗?{p.is_file()})# Trueprint(f是目录吗?{p.is_dir()})# False4. 创建目录(自动创建父级,不怕报错)outPath(D:/test/dm_projects/output)out.mkdir(parentsTrue,exist_okTrue)# 父目录不存在也会一并创建,已存在也不报错5. 递归找出 PDF / MD 并读取rootPath(D:/project/docs)fileslist(root.rglob(*))pdfs[pforpinfilesifp.suffix.lower().pdf]mds[pforpinfilesifp.suffix.lower().md]formdinmds:textmd.read_text(encodingutf-8)# Markdown 纯文本,读完即用forpdfinpdfs:rawpdf.read_bytes()# PDF 是二进制,还看不懂常用成员:rglob()(递归通配)、read_text()、read_bytes()、exists()、is_file()、stat().st_size(拿文件大小)、mkdir()。二、os—— 经典过程式文件操作(底层可控)os更命令式,适合写脚本时做精细控制。和pathlib干的活一样,只是写法更啰嗦:importos rootD:/project/docsfordirpath,_,filenamesinos.walk(root):forfninfilenames:iffn.lower().endswith((.pdf,.md)):fullos.path.join(dirpath,fn)iffn.lower().endswith(.md):textopen(full,encodingutf-8).read()os.walk()在需要边走边过滤时很顺手;os.path系列(join/exists/splitext)做字符串拼路径也行。三、pathlib与os.path对照表(核心区别)两者功能等价,只是 API 风格不同。能对照着记就最清楚:需求pathlib(对象式)os.path(函数式)拼接路径Path(a) / b / cos.path.join(a, b, c)完整文件名p.nameos.path.basename(p)后缀p.suffixos.path.splitext(p)[1]纯文件名(无后缀)p.stemos.path.splitext(p)[0]父目录p.parentos.path.dirname(p)是否存在p.exists()os.path.exists(p)是否文件p.is_file()os.path.isfile(p)是否目录p.is_dir()os.path.isdir(p)创建多级目录p.mkdir(parentsTrue, exist_okTrue)os.makedirs(p, exist_okTrue)绝对路径p.resolve()/p.absolute()os.path.abspath(p)遍历目录p.iterdir()/p.rglob(*)os.listdir()/os.walk()风格差异小结pathlib:路径即对象,方法链式调用,跨平台(\与/自动处理),可读性高 → 新项目首选。os.path:路径即字符串,函数式调用,老代码/需要精细系统交互时常见 → 维护老脚本不必强行改。本质:pathlib在底层也是对字符串做同样的处理,只是把操作封装成了对象方法。四、pandas—— 表格数据提取(不是 PDF/MD,但是内容进 DataFrame的桥)pandas本身不解析PDF/MD,但一旦你把内容抽出来变成结构化数据,它是最快的清洗/分析工具:importpandasaspd dfpd.read_csv(extracted.csv)print(df.shape,df.columns)subsetdf[df[type].isin([pdf,md])]常见读取器:read_csv/read_excel/read_json/read_parquet。当你要对提取结果做统计时上 pandas,而不是用它去读原始 PDF。五、专门做内容提取的第三方库(按格式分)os/pathlib只拿到文件,要读懂里面写了什么得靠这些:PDF 提取库特点pdfplumber最易上手,extract_text()/ 按页 / 抽表格PyPDF2轻量,基础文本和合并拆分fitz(PyMuPDF)速度最快,还能转图、抽版式importpdfplumberwithpdfplumber.open(report.pdf)aspdf:page1pdf.pages[0].extract_text()# 这才是读懂了 PDFMarkdownMarkdown本身就是纯文本,pathlib读完就能用。只有你想识别标题/链接结构时才需解析库(如markdown转 HTML)。多数情况不需要。Office / 其他库用途python-docx抽 Word 文字/表格openpyxl读 Excel 单元格python-pptx抽 PPT 文本tabula-pyPDF 里的表格 → DataFrame六、组合实战(典型提取流程)frompathlibimportPathimportpdfplumber,pandasaspd rootPath(D:/docs)records[]forpinroot.rglob(*):ifp.suffix.lower().pdf:withpdfplumber.open(p)aspdf:textpdf.pages[0].extract_text()records.append({file:str(p),type:pdf,text:text})elifp.suffix.lower().md:records.append({file:str(p),type:md,text:p.read_text(encodingutf-8)})dfpd.DataFrame(records)df.to_csv(extracted.csv,indexFalse)总结分层:pathlib/os负责找到并读出文件 →pdfplumber/fitz负责从 PDF 二进制里抽出文字 →pandas负责对抽出的内容做统计。Markdown 因为本就是文本,第二层可以省掉。

相关新闻

Agentic AI接入生产三个月:我以为缺的是模型,其实是权限和可观测

Agentic AI接入生产三个月:我以为缺的是模型,其实是权限和可观测

聊《Agentic AI真能提效吗?先看流程里最慢的那一步》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。 摘要 去年我开始做 Agentic AI 项目,以为核心难点在 Prompt 工程和模型选型&#xff0…

2026/10/4 9:27:21 阅读更多 →
终极指南:如何用开源工具批量下载Fantia创作者内容

终极指南:如何用开源工具批量下载Fantia创作者内容

终极指南:如何用开源工具批量下载Fantia创作者内容 【免费下载链接】fantiadl Download posts and media from Fantia 项目地址: https://gitcode.com/gh_mirrors/fa/fantiadl 在数字内容创作蓬勃发展的今天,Fantia平台汇聚了众多优秀创作者的高质…

2026/10/2 13:54:56 阅读更多 →
ZenlessZoneZero-OneDragon架构解析:基于Python的状态机驱动游戏自动化技术实现

ZenlessZoneZero-OneDragon架构解析:基于Python的状态机驱动游戏自动化技术实现

ZenlessZoneZero-OneDragon架构解析:基于Python的状态机驱动游戏自动化技术实现 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero…

2026/10/2 12:28:59 阅读更多 →

最新新闻

硬件工程师成长路径:从理论到实践,用项目驱动能力跃迁

硬件工程师成长路径:从理论到实践,用项目驱动能力跃迁

硬件工程师这个行当,有个很有意思的现象:科班出身、成绩不错的人,刚进公司头一年往往会被现实教育得很惨;反而是一些在学校“不务正业”、整天泡实验室折腾板子的人,能很快上手干活。这不是个别现象,而是这…

2026/10/7 6:20:40 阅读更多 →
ASP.NET企业后台源码部署实战:从解压到跑通再到改造排错

ASP.NET企业后台源码部署实战:从解压到跑通再到改造排错

简介:这是一份基于ASP.NET与C#语言开发的企业网站后台管理系统源码包,适合毕业设计选题、课程实训,以及希望系统学习Web后台开发的初中级开发者。压缩包共608个文件,容量6.71MB,主要包含aspx页面、cs后台逻辑、数据库文…

2026/10/7 6:20:40 阅读更多 →
陈卫军谈选人:选人和选生意同等重要

陈卫军谈选人:选人和选生意同等重要

大多数创业者把精力放在“做什么生意”上,商业作者陈卫军却把“和什么人做”提到了同一个高度。他的原话是:“选人和选生意同等重要。” 陈卫军是《赚钱思维》《持续成交》作者,长期研究商业、人性与思维。在他看来,生意的成败往往…

2026/10/7 6:20:40 阅读更多 →
context-mode:大模型上下文管理与Token预算实战

context-mode:大模型上下文管理与Token预算实战

做 LLM 应用开发的朋友,尤其是搞 Agent、搞对话机器人的,一定被"上下文"这东西折磨过。实测下来,同样的模型、同样的提示词,上下文组织方式不同,效果天差地别——有人花小钱办大事,有人烧着高价 …

2026/10/7 6:20:40 阅读更多 →
Breeze v8.1.3.0:巨型社交平台的消息投递中间件实践

Breeze v8.1.3.0:巨型社交平台的消息投递中间件实践

简介:Breeze v8.1.3.0 是一套用于快速搭建类 Facebook 私人社交平台的 PHP 源码包,面向站长、独立开发者及有品牌社区运营需求的中小团队。程序整合用户主页、动态流、即时通讯、高级搜索等核心模块,采用响应式设计与视网膜适配界面&#xff…

2026/10/7 6:20:40 阅读更多 →
算法竞赛复盘:贡献法、滑动窗口与线性DP的典型陷阱

算法竞赛复盘:贡献法、滑动窗口与线性DP的典型陷阱

2019年6月17日,我在某个入门OJ上参加了一场相当随(cao)机(shuai)的模拟考试。三个题分别叫Seq、photo和分组行动。本来我的目标是三题全部AC,结果考完出来一算,第一题想复杂了,第二题…

2026/10/7 6:19:39 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 6:26:51 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 4:21:51 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →