02|善用Python扩展库:如何批量合并多个文档?
02|善用Python扩展库:如何批量合并多个文档?
讲述:尹会生
时长23:15大小21.30M
手工操作和用 Python 操作的区别
如何合并多个 Word 文件,只保留文字内容?
怎样合并不同类型的文件?
将纯文本和 Word 文件合并
将图片和 Word 文件合并
将 Excel 和 Word 文件合并
小结
思考题
赞 10
提建议
精选留言(23)
- 周文玲置顶2021-09-14老师,零基础学些这门课程感觉有些困难,一开始以为只是在excel里面去写函数就可以实现,听了您的课发现讲的挺详细的,但感觉自己不太能理解和应用,还是有点懵,如何有成效的学习这门课呢?
作者回复: 这是正常现象,我来帮你梳理一下主要的学习目标,这样能帮你理解这些程序编写的目的。 首先在办公自动化工作当中引入编程并不是降低了办公自动化的门槛,反而是提高了。换句话说就是明明可以用5+5+5+5计算得到计算结果20,为什么要学习乘法,掌握5*4这种方法呢? 因为办公工作中有大量重复的工作时,不想手动做,那就需要掌握一个高级的工具,也就是编程语言,但是编程语言要先死记硬背Python语法,这些语法就像咱们学过的九九乘法表一样,没有捷径。我觉得这是作为零基础的同学学习起来比较困难的原因 其次,编程的概念比较抽象,最开始掌握的时候可以结合着例子来记忆,如果你的工作中有重复性的任务,结合起来记忆效率是最高的 最后,编程语言的学习过程是先模仿,再理解,最后再创造;这也可能和我们学习其他技能不大一样的地方。编程需要多写,慢慢才能够理解其中的含义。 希望能够对你有帮助
3 - 🐑置顶2022-03-30编辑小提示:专栏的完整代码位置是https://github.com/wilsonyin123/python_productivity,可点击链接下载查看。 或者通过网盘链接提取后下载,链接是: https://pan.baidu.com/s/1UvEKDCGnU6yb0a7gHLSE4Q?pwd=5wf1,提取码: 5wf1。
- 黄矢2021-02-07沿用老师的代码,生成docx文件,然后使用python拓展库将docx文件批量转pdf,最后将pdf批量转图片
作者回复: 可以自己找一找pdf库,写一写会有更深刻的印象
4 - 建明2021-03-06老师其实我真的是完全的0基础,我听了前几节课如果能学好必然会对我的工作效率有质的提升,我目前还有一个0基础学Python,现在学这门课很困难,但我想学这门课,能否给我推荐一个学习的思路呢,如何构建我Python学习体系呢。
作者回复: 我觉得可以先去模仿代码,然后再去理解。 另外可以找一些从零基础学拍摄的书籍作为系统性参考。 我为你推荐一本《learing Python the hardway》比较适合初学者。
3 - 吴杨2021-09-07老师的文稿能否发到其他云空间供我们下载,GitHub被墙的概率太高了。
作者回复: 写程序是避免不了访问github的,推荐你一种方法,叫做github加速。例如: 使用github的镜像网站 原地址: https://github.com/xxx.git 替换为: https://github.com.cnpmjs.org/xxx.git
2 - 开元₂³³³³³³³2022-05-18老师,我用vscode编写,python-docx很多都没有代码提示,这是正常的吗?1
- new2021-10-31说实话不是所有的小白都适合,如果对编程一点基础都没有的话不合适听,功能都找不全,还是要有点儿编程基础1
- CHEN诚2022-11-17 来自广东你在课程中的编程软件是python自带的编程平台还是其他的第三编程平台
- 纳兰容若2022-10-25 来自广东老师您好 为什么提示我在docx.py中没有Document类 我是在windows下用的pycharm python3.10
作者回复: 检查一下是否安装了docx 库,安装的命令是 pip3 install docx
共 2 条评论 - 憨憨丶小完能2022-10-10 来自广东老师这个其实是适合进阶的,零基础学起来是会有些困难的。联系先学一下简单的零基础课程再来学就更快一些
- 陈小远2022-07-09老师,添加图片的写的比较简单了,我试了下添加图片,按照示例代码添加进图又太小了,设置长宽后又不太合适,始终达不到直接粘贴到word中的那种效果。所以想请教老师,实际编码过程中,如何设置添加图片的大小才能确保图片不过小或过大导致变形或显示不全等问题呢?
- 骑行的掌柜J2022-04-16还不错 感觉这课程对有Python基础的更友好😂
- Geek_bc02912021-12-26#创建个目录 import os # word文件所在路径 word_files_path = '/Users/edz/Desktop/效率专栏/文章2/word样例文件' if os.path.isdir(word_files_path): print(word_files_path) else: os.makedirs(word_files_path) print("create dir ok")展开
- 天国之影2021-12-07如果发现文档保存在上一层目录,可将代码做如下修改: file_name = PurePath(invitation_path, replace_content['<姓名>']).with_suffix('.docx') 修改原因: 由于使用了with_name()函数,导致修改了最后的文件路径,从而导致保存在上一层目录,按照上述修改,可保证文件路径和文件名连在一起。
- 刘慧慧2021-11-08def 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
- Armstrong2021-08-09merge_without_format函数里面newpar = doc.add_paragraph('') ......其中doc没有定义,是不是会报错?
作者回复: doc对象的add_paragraph('')方法调用时,如果doc对象不存在肯定会报错的
- nick2021-07-06邀请函那个代码能调通吗,其他两个调通了,是不是有什么问题共 1 条评论
- 紫薯酸牛奶2021-07-06问题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循环只执行一次,这样整个程序就是自上到下顺序执行的了,这样便于你理解程序的工作原理,如果调试后还不理解我再直接提供答案给你
共 3 条评论 - cathy20522021-02-28在定义了合并函数后,想合并一个目录下所有文件 wordfilespath = 'C:/Users/82695/办公自动化课程/文章2代码/word样例文件' p1=Path(wordfilespath) merger_without_format(p1) 执行后的错误: File "<ipython-input-12-b09143b771a9>", line 13 wordfilespath = 'C:/Users/82695/办公自动化课程/文章2代码/word样例文件' ^ SyntaxError: invalid syntax展开
作者回复: line 13 SyntaxError: invalid syntax 结合上一条留言, 应该是wordfilespath 这一行定义变量的时候, 前面有空格, Python解释器会将有缩进的行和上一行代码组成一个代码块, 而上面语句不是定义函数或者判断循环等代码块的语句,就会报错了 , 解决方法, 删掉13行 wordfilespath变量定义这一行开头的空格
- cathy20522021-02-28File "<ipython-input-9-724ba4cc277c>", line 10 merger_without_format('C:/Users/82695/办公自动化课程/文章2代码/word样例文件/绩效考核管理制度1.docx','C:/Users/82695/办公自动化课程/文章2代码/word样例文件/绩效考核管理制度2.docx') ^ SyntaxError: invalid syntax展开