02|善用Python扩展库:如何批量合并多个文档?
该思维导图由 AI 生成,仅供参考
手工操作和用 Python 操作的区别
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何使用Python扩展库来批量合并不同类型的文件,重点讲解了合并Word文件、Txt文件、图片和Excel文件的操作方法。作者首先比较了手工操作和使用Python操作的区别,强调了Python操作的高效性和便捷性。然后通过示例代码演示了如何使用python-docx扩展库实现Word文档自动化操作,包括合并多个Word文件并提取文字内容。此外,还介绍了将纯文本和Word文件合并、图片和Word文件合并、以及Excel和Word文件合并的具体操作方法。作者强调了选择Word兼容的格式、将手工操作转换为Python程序实现以及编写函数功能的重要性。最后,留下了一个思考题,引发读者思考如何解决邀请函格式从Word文件改为图片的问题。整体而言,本文以清晰的步骤和示例帮助读者了解了如何利用Python扩展库实现不同类型文件的合并,突出了Python操作的高效性和便捷性。
《Python 自动化办公实战课》,新⼈⾸单¥59
全部留言(25)
- 最新
- 精选
- 🐑置顶编辑小提示:专栏的完整代码位置是https://github.com/wilsonyin123/python_productivity,可点击链接下载查看。 或者通过网盘链接提取后下载,链接是: https://pan.baidu.com/s/1UvEKDCGnU6yb0a7gHLSE4Q?pwd=5wf1,提取码: 5wf1。2022-03-30
- 周文玲置顶老师,零基础学些这门课程感觉有些困难,一开始以为只是在excel里面去写函数就可以实现,听了您的课发现讲的挺详细的,但感觉自己不太能理解和应用,还是有点懵,如何有成效的学习这门课呢?
作者回复: 这是正常现象,我来帮你梳理一下主要的学习目标,这样能帮你理解这些程序编写的目的。 首先在办公自动化工作当中引入编程并不是降低了办公自动化的门槛,反而是提高了。换句话说就是明明可以用5+5+5+5计算得到计算结果20,为什么要学习乘法,掌握5*4这种方法呢? 因为办公工作中有大量重复的工作时,不想手动做,那就需要掌握一个高级的工具,也就是编程语言,但是编程语言要先死记硬背Python语法,这些语法就像咱们学过的九九乘法表一样,没有捷径。我觉得这是作为零基础的同学学习起来比较困难的原因 其次,编程的概念比较抽象,最开始掌握的时候可以结合着例子来记忆,如果你的工作中有重复性的任务,结合起来记忆效率是最高的 最后,编程语言的学习过程是先模仿,再理解,最后再创造;这也可能和我们学习其他技能不大一样的地方。编程需要多写,慢慢才能够理解其中的含义。 希望能够对你有帮助
2021-09-144 - 黄矢沿用老师的代码,生成docx文件,然后使用python拓展库将docx文件批量转pdf,最后将pdf批量转图片
作者回复: 可以自己找一找pdf库,写一写会有更深刻的印象
2021-02-074 - 建明老师其实我真的是完全的0基础,我听了前几节课如果能学好必然会对我的工作效率有质的提升,我目前还有一个0基础学Python,现在学这门课很困难,但我想学这门课,能否给我推荐一个学习的思路呢,如何构建我Python学习体系呢。
作者回复: 我觉得可以先去模仿代码,然后再去理解。 另外可以找一些从零基础学拍摄的书籍作为系统性参考。 我为你推荐一本《learing Python the hardway》比较适合初学者。
2021-03-063 - 吴杨老师的文稿能否发到其他云空间供我们下载,GitHub被墙的概率太高了。
作者回复: 写程序是避免不了访问github的,推荐你一种方法,叫做github加速。例如: 使用github的镜像网站 原地址: https://github.com/xxx.git 替换为: https://github.com.cnpmjs.org/xxx.git
2021-09-072 - 笨笨老师这个‘excel 提前处理为 python 的基础类型–字典(链接)’代码有吗?或者有把Excel处理好后的字典形式的最终结果吗?这里是把excel处理成了两个文件了吗?我想象如果要处理成一个字典的话是这样的:{姓名:韩梅梅,姓名:李雷,称呼:女士,称呼;女士}。但这样不太合理。
作者回复: 是的,这是不太合理的,你可以选择字典中嵌入另一个字典,组成更复杂的结构(但是能表达更丰富的逻辑),也可以将字典中的姓名和称呼组合成一个列表,如: {[1,{姓名:韩梅梅},{称呼:女士}], [2,{姓名:李雷},{称呼:女士}],} 这种
2023-06-26归属地:北京 - 纳兰容若老师您好 为什么提示我在docx.py中没有Document类 我是在windows下用的pycharm python3.10
作者回复: 检查一下是否安装了docx 库,安装的命令是 pip3 install docx
2022-10-25归属地:广东2 - 刘慧慧def merge_without_format(docx_files: list): 这个list整个代码未见使用定义在这里是干什么的?去掉这个list运行报 File "/Users/hhliu/Documents/test/autoWork/day01/mergeDoc.py", line 9, in merge_without_format another_doc = Document(docx_file) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/api.py", line 25, in Document document_part = Package.open(docx).main_document_part File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/opc/package.py", line 128, in open pkg_reader = PackageReader.from_file(pkg_file) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/opc/pkgreader.py", line 32, in from_file phys_reader = PhysPkgReader(pkg_file) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/opc/phys_pkg.py", line 31, in __new__ "Package not found at '%s'" % pkg_file docx.opc.exceptions.PackageNotFoundError: Package not found at 'c'
作者回复: 我先来交代一下背景, Python是一种强类型的编程语言,也就是当某个变量(对象)是A类型,如果没有显示的改变,它在运行过程中一直是A类型,不是也不会变成B类型。 这里的list() 就是一个强制类型转换函数。它的作用是将list括号中的对象(变量名)的类型强制转换成为“列表类型”,而转换的原因是后面我们需要列表类型来对数据进行拆分。 因此如果去掉了list,后面代码逻辑处理的对象就是非列表类型,也就出现了无法拆分的类似错误。 更详细的内容可以参考Python基础数据类型 地址如下: https://docs.python.org/zh-cn/3.6/library/stdtypes.html
2021-11-08 - Armstrongmerge_without_format函数里面newpar = doc.add_paragraph('') ......其中doc没有定义,是不是会报错?
作者回复: doc对象的add_paragraph('')方法调用时,如果doc对象不存在肯定会报错的
2021-08-09 - 紫薯酸牛奶问题1: replace_content = { '<姓名>' : 'no_name', '<性别>' : 'm_f', '<今天日期>' : today, } 老师我想问下,制作邀请函中的 这个代码里面的no_name, 和m_f的含义是什么, 我自己想做个扩展练习,把邀请函模板里的酒店也批量替换掉,一直成功不了 问题2: 关于保存路径 # 邀请函路径 invitation_path = '测试文件/邀请函样例文件/111' 下面保存生成的文件代码是这个 file_name = PurePath(invitation_path).with_name(replace_content['<姓名>']).with_suffix('.docx') doc.save(file_name) 为啥总是保存在上一级文件夹(邀请函示例文件)而不是111这个文件夹 烦请老师帮忙解答下
作者回复: 首先我先回答第二个问题,PurePath(invitation_path).with_name(replace_content['<姓名>']).with_suffix('.docx') 为了书写好看,这条语句较长,我们可以将它按照如下方式拆开 x=a().b().c() 拆分成 x=a() print(x) y=x.b() print(y) z=y.c() print(z) 根据每部分输出,相信你肯定能定位出路径问题出在哪个函数 接下来第一个问题也迎刃而解了,依然用print输出两个变量到终端,但是要注意,为了让代码更好调试,多个重复的文件和文字内容改成只有一个,即不改变代码里的for循环,但是因为内容只有一个,所以for循环只执行一次,这样整个程序就是自上到下顺序执行的了,这样便于你理解程序的工作原理,如果调试后还不理解我再直接提供答案给你
2021-07-063