首頁 > 軟體

Python實現批次生成,重新命名和刪除word檔案

2023-03-31 06:01:47

批次生成word檔案

場景:需要新建多個類似檔名

比如:今天的事例是新建12個檔名為:

保安員考試試卷1及答案.docx

保安員考試試卷2及答案.docx

​ ...

保安員考試試卷12及答案.docx

痛點:

手動操作重複性高,出錯率高,易造成人疲勞,降低效率;

安裝

pip install python-docx

log

(env_qt) D:codeqt_demodemo>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:userswzappdatalocalpipcachewheels39cac1d3e7abe5ce2e8423382d816e689c056bc26590f48fad8f2
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:codeqt_demodemo>****

官方檔案:

https://python-docx.readthedocs.io/en/latest/index.html

三方庫引入

import os
from docx import Document

解釋:

1.在檔案路徑下會獲取資料夾下面所有檔案,使用os模組;

2.word檔案的相關操作使用docx模組;

批次新建檔名

場景:需要新建多個類似檔名

比如:今天的事例是新建12個檔名為:

保安員考試試卷1及答案.docx

保安員考試試卷2及答案.docx

​ ...

保安員考試試卷12及答案.docx

痛點:

手動操作重複性高,出錯率高,易造成人疲勞,降低效率;

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

生成word檔案

生成單個檔案

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:UserswzDesktop保安員考試試卷"
    document = Document()
    pre_fix = "保安員考試"
    # name_all = gen_names(pre_fix, 10)
    # new_many_file(document, name_all)
    # rename_file("tmp")
    del_files("tmp")

效果展示

批次生成檔案

批次重新命名檔案

刪除檔案

所有程式碼

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:UserswzDesktop保安員考試試卷"
    document = Document()
    pre_fix = "保安員考試"
    # 生成多個檔名
    # name_all = gen_names(pre_fix, 10)
    #建立多個檔案
    # new_many_file(document, name_all)
    # 重新命名檔案
    # rename_file("tmp")
    # 刪除檔案
    del_files("tmp")

以上就是Python實現批次生成,重新命名和刪除word檔案的詳細內容,更多關於Python word的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com