python docx 批量修改docx文件内容和选择位置添加内容

2020-12-06 00:57:59   |  1408 人气

#-*- encoding:utf_8 -*-

from docx import Document

from docx.shared import Inches

from log import logger

import os


'''

python docx 批量修改docx文件内容和选择位置添加内容的初步尝试

不喜勿喷♪(^∇^*)

'''


def folder_filelist(pathname):

    '''

    读取所有文件名,为了实现对文件夹的批处理

    '''

    filename_list = list()

    full_pathname = os.path.abspath(pathname)

    if os.path.isfile(full_pathname):

        if _is_legal_postfix(full_pathname):

            filename_list.append(full_pathname)

        else:

            raise TypeError('文件 {} 后缀名不合法!仅支持如下文件类型:{}。'.format(pathname, '、'.join(self._handle_postfix)))

    elif os.path.isdir(full_pathname):

        for relpath, _, files in os.walk(full_pathname):

            for name in files:

                filename = os.path.join(full_pathname, relpath, name)

                if _is_legal_postfix(filename):

                    filename_list.append(os.path.join(filename))

        return filename_list

    else:

        raise TypeError('文件/文件夹 {} 不存在或不合法!'.format(pathname))


def _is_legal_postfix(filename):

    _handle_postfix = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'pdf']

    return filename.split('.')[-1].lower() in _handle_postfix and not os.path.basename(filename).startswith(

        '~')



def insert_dash(string, index, insert_content):

    '''

    str中插入字符

    '''

    return string[:index] + insert_content + string[index:]


def find_replace(docxname, findname, replacename):

    '''

    docx中替换内容

    '''

    document = Document(docxname)


    for paragraph in document.paragraphs:

        line = paragraph.text

        logger.info(line)

        paragraph.clear()

        if line.find(findname) != -1:

            line = insert_dash(line, line.find(findname), replacename)

            line = line.replace(findname,"")

        paragraph.add_run(line)

        logger.info(line)


    document.save("1" + docxname)


def find_add_paragraph(docxname, findname, insert_paragraph):

    '''

    docx中想要的位置,插入段落

    '''

    document = Document(docxname)


    for paragraph in document.paragraphs:

        line = paragraph.text

        logger.info(line)

        if line.find(findname) != -1:

            for content in insert_paragraph:

                paragraph.add_run('\n'+content)

                logger.info(content)


    document.save("1" + docxname)


if __name__ == '__main__':


    for filename in folder_filelist('pdfconver'):

        logger.info(filename)

    find_replace('1.docx', '666', '6666')


    find_add_paragraph('1.docx', '6', ['你好', 'spa'])


上一篇:python-docx中文文档使用小结

下一篇:python day2 附:docx字体大小参照对照表:
收藏
相关资源
(暑期特供)高中语文 2.1《归去来兮辞》并序同步测试 新人教版必修5.doc (暑期特供)高中语文 2.1《归去来兮辞》并序同步测试 新人教版必修5.doc
(普通班)高三数学一轮复习 第十四篇 不等式选讲 第1节 绝对值不等式基础对点练 理-人教版高三全册数学试题.doc (普通班)高三数学一轮复习 第十四篇 不等式选讲 第1节 绝对值不等式基础对点练 理-人教版高三全册数学试题.doc
高考数学二轮复习 主攻36个必考点 函数与导数 考点过关检测三十一 文-人教版高三全册数学试题.doc 高考数学二轮复习 主攻36个必考点 函数与导数 考点过关检测三十一 文-人教版高三全册数学试题.doc
(普通班)高三数学一轮复习 第八篇 立体几何与空间向量 第7节 立体几何中的向量方法 第二课时 求空间角与距离基础对点练 理-人教版高三全册数学试题.doc (普通班)高三数学一轮复习 第八篇 立体几何与空间向量 第7节 立体几何中的向量方法 第二课时 求空间角与距离基础对点练 理-人教版高三全册数学试题.doc
高考地理 知能提升练二 人口迁移(含解析)新人教版必修2-新人教版高三必修2地理试题.doc 高考地理 知能提升练二 人口迁移(含解析)新人教版必修2-新人教版高三必修2地理试题.doc
高考数学二轮复习 主攻36个必考点 三角函数与解三角形 考点过关检测六 文-人教版高三全册数学试题.doc 高考数学二轮复习 主攻36个必考点 三角函数与解三角形 考点过关检测六 文-人教版高三全册数学试题.doc
高考物理第二轮复习 第5讲 经典动量守恒之碰撞课后练习-人教版高三物理试题.doc 高考物理第二轮复习 第5讲 经典动量守恒之碰撞课后练习-人教版高三物理试题.doc
(水滴系列)山东省滕州市高考化学一轮复习 考前特训九 化学反应速率与化学平衡 新人教版-新人教版高三全册化学试题.doc (水滴系列)山东省滕州市高考化学一轮复习 考前特训九 化学反应速率与化学平衡 新人教版-新人教版高三全册化学试题.doc
热门资讯
python批量将文件夹内所有PPT转化为PPTX
2020年全国一级建造师注册考试专题
2020年全国二级建造师注册考试专题
python day2 附:docx字体大小参照对照表:
python批量将文件夹内所有doc转成docx
用Python批量替换多个Word文件中的文字
doc批量转成docx(doc batch convert docx)
国标电子书库2021年3月资源更新列表
python docx 触发批量替换
python day3

当前位置:首页 > 新闻中心 > 教育考试


客服QQ:2660337891点击这里给我发消息

手机:13423958347
 汇文网版权所有  联系邮箱:2660337891#qq.com (请把#改为@)  
  鄂ICP备2022007403号,本站可开发票,需开票联系客服QQ。