Home > Backend Development > Python Tutorial > How to batch generate, rename and delete word files in Python

How to batch generate, rename and delete word files in Python

王林
Release: 2023-04-30 11:52:06
forward
1345 people have browsed it

    Batch generation of word files

    Scenario: Need to create multiple similar file names

    For example: Today’s example is to create 12 new files Name:

    Security Guard Exam Paper 1 and Answers.docx

    Security Guard Exam Paper 2 and Answers.docx

    ...

    Security Guard Exam paper 12 and answers.docx

    Pain points:

    Manual operations are highly repetitive and have a high error rate, which can easily cause fatigue and reduce efficiency;

    Installation

    pip install python-docx
    Copy after login

    log

    (env_qt) D:\code\qt_demo\demo>pip install python-docx
    Looking in indexes: pypi.tuna.tsinghua.edu.cn/simple
    Collecting python-docx
    Using cached pypi.tuna.tsinghua.edu.cn/packages/8b…
    33/python-docx-0.8.11.tar.gz (5.6 MB)
    Preparing metadata ( setup.py) ... done
    Collecting lxml>=2.3.2
    Downloading pypi.tuna.tsinghua.edu.cn/packages/39…
    8/lxml-4.9.2-cp39-cp39 -win_amd64.whl (3.9 MB)
    ------------------------------------------ - 3.9/3.9 MB 1.4 MB/s eta 0:00:00
    Building wheels for collected packages: python-docx
    Building wheel for python-docx (setup.py) ... done
    Created wheel for python-docx: filename=python_docx-0.8.11-py3-none-any.whl size=184519 sha256=595cd9888a3832964d8f2477f
    fd5325f596549da8c1dd305e63d5f7b3d24884c
    Stored in directory: c:\user s\wz\appdata\local\pip\ cache\wheels\39\ca\c1\d3e7abe5ce2e8423382d816e689c056bc26590f48fad8f2
    0ac
    Successfully built python-docx
    Installing collected packages: lxml, python-docx
    Successfully installed lxml-4.9.2 python-docx-0.8 .11
    [notice] A new release of pip available: 22.3.1 -> 23.0.1
    [notice] To update, run: python.exe -m pip install --upgrade pip
    ( env_qt) D:\code\qt_demo\demo>****

    Three-party library introduction

    import os
    from docx import Document
    Copy after login

    Explanation:

    1. It will be obtained under the file path All files under the folder use the os module;

    2. Word document related operations use the docx module;

    Batch new file names

    Scenario: Need to create multiple similar file names

    For example: Today’s example is to create 12 new file names:

    Security Guard Exam Paper 1 and Answers.docx

    Security Guard Exam Paper 2 and Answers.docx

    ...

    Security Guard Exam Paper 12 and Answers.docx

    Pain Points:

    Manual operations are highly repetitive and have a high error rate, which can easily cause fatigue and reduce efficiency;

    def gen_names(pre_fix, num):
        """
        批量生成文件名
        :param pre_fix: 文件名的前缀
        :param num: 文件数量
        :return:name_list :文件名列表(所有要生成的文件名)
        """
        print("生成文件名列表开始")
    
        name_list = []
        for i in range(1, num + 1):
            tmp = pre_fix + str(i)
            name_list.append(tmp)
        print("生成文件名列表结束")
        return name_list
    Copy after login

    Generate a word file

    Generate a single file

    def new_one_file(document, name):
        """
        生成单个文件
        :param document:
        :param name: 文件名
        :return:
        """
        print("单个生成文件开始")
        document.save(name + '.docx')
        print("单个生成文件结束")
    Copy after login

    Generate multiple files

    def new_many_file(document, names):
        """
        生成多个文件
        :param document: Document实例对象
        :param names:多个文件的文件名
        :return:
        """
        print("批量生成文件开始")
        for name in names:
            document.save(os.path.join("tmp", name + '.docx'))
        print("批量生成文件结束")
    Copy after login

    Rename files

    def rename_file(path):
        """
        将path路径下的文件都重命名
        规则:在原文件名后面加上 ---> "及答案." 字段
        :param path:
        :return:
        """
        print("重命名开始")
        files = os.listdir(path)
        for file in files:
            name, doc_type = file.split(".")
            new_name = os.path.join(path, name + "及答案." + doc_type)
            file_tmp = os.path.join(path, file)
            # 语法:
            # os.rename(src, dst) :用于命名文件或目录
            # src:需要修改的文件或目录名。
            # dst:修改后的文件或目录名。
            os.rename(file_tmp, new_name)
        print("重命名结束")
    Copy after login

    Delete files

    def del_files(path):
        """
        删除指定路径下的文件
        :param path:
        :return:
        """
        print("删除开始")
        files = os.listdir(path)
        for file in files:
            os.remove(os.path.join(path, file))
        print("删除成功")
    Copy after login

    Function call

    if __name__ == '__main__':
        path = r"C:\Users\wz\Desktop\保安员考试试卷"
        document = Document()
        pre_fix = "保安员考试"
        # name_all = gen_names(pre_fix, 10)
        # new_many_file(document, name_all)
        # rename_file("tmp")
        del_files("tmp")
    Copy after login

    Effect display

    Generate files in batches

    How to batch generate, rename and delete word files in Python

    Rename files in batches

    How to batch generate, rename and delete word files in Python

    Delete files

    How to batch generate, rename and delete word files in Python

    All codes

    import os
    from docx import Document
    
    
    def gen_names(pre_fix, num):
        """
        批量生成文件名
        :param pre_fix: 文件名的前缀
        :param num: 文件数量
        :return:name_list :文件名列表(所有要生成的文件名)
        """
        print("生成文件名列表开始")
    
        name_list = []
        for i in range(1, num + 1):
            tmp = pre_fix + str(i)
            name_list.append(tmp)
        print("生成文件名列表结束")
        return name_list
    
    
    def new_one_file(document, name):
        """
        生成单个文件
        :param document:
        :param name: 文件名
        :return:
        """
        print("单个生成文件开始")
        document.save(name + '.docx')
        print("单个生成文件结束")
    
    
    def new_many_file(document, names):
        """
        生成多个文件
        :param document: Document实例对象
        :param names:多个文件的文件名
        :return:
        """
        print("批量生成文件开始")
        for name in names:
            document.save(os.path.join("tmp", name + '.docx'))
        print("批量生成文件结束")
    
    
    def rename_file(path):
        """
        将path路径下的文件都重命名
        规则:在原文件名后面加上 ---> "及答案." 字段
        :param path:
        :return:
        """
        print("重命名开始")
        files = os.listdir(path)
        for file in files:
            name, doc_type = file.split(".")
            new_name = os.path.join(path, name + "及答案." + doc_type)
            file_tmp = os.path.join(path, file)
            # 语法:
            # os.rename(src, dst) :用于命名文件或目录
            # src:需要修改的文件或目录名。
            # dst:修改后的文件或目录名。
            os.rename(file_tmp, new_name)
        print("重命名结束")
    
    
    def del_files(path):
        """
        删除指定路径下的文件
        :param path:
        :return:
        """
        print("删除开始")
        files = os.listdir(path)
        for file in files:
            os.remove(os.path.join(path, file))
        print("删除成功")
    
    
    if __name__ == '__main__':
        path = r"C:\Users\wz\Desktop\保安员考试试卷"
        document = Document()
        pre_fix = "保安员考试"
        # 生成多个文件名
        # name_all = gen_names(pre_fix, 10)
        #创建多个文件
        # new_many_file(document, name_all)
        # 重命名文件
        # rename_file("tmp")
        # 删除文件
        del_files("tmp")
    Copy after login

    The above is the detailed content of How to batch generate, rename and delete word files in Python. For more information, please follow other related articles on the PHP Chinese website!

    Related labels:
    source:yisu.com
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template