【Python】RPA批量生成word文件/重命名及批量删除

news2024/11/19 15:22:58

批量生成word文件

场景:需要新建多个类似文件名

比如:今天的事例是新建12个文件名为:

​ 保安员考试试卷1及答案.docx

​ 保安员考试试卷2及答案.docx

​ …

​ 保安员考试试卷12及答案.docx

痛点:

​ 手动操作重复性高,出错率高,易造成人疲劳,降低效率;

安装

pip install python-docx

log

(env_qt) D:\code\qt_demo\demo>pip install python-docx
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting python-docx
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/8b/a0/52729ce4aa026f31b74cc877be1d11e4ddeaa361dc7aebec148171644b
33/python-docx-0.8.11.tar.gz (5.6 MB)
Preparing metadata (setup.py) … done
Collecting lxml>=2.3.2
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/39/54/ddafeec12c7c5d36a322ecc251f981dc8a7e5dff1d3a901646230a4b083
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:\users\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>****

官方文档:

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:\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")

效果展示

批量生成文件
在这里插入图片描述
批量重命名文件

批量重命名
在这里插入图片描述

删除文件
在这里插入图片描述

所有代码

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")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/388439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测中回归损失函数(L1Loss,L2Loss,Smooth L1Loss,IOU,GIOU,DIOU,CIOU,EIOU,αIOU ,SIOU)

文章目录L-norm Loss 系列L1 LossL2 LossSmooth L1 LossIOU系列IOU (2016)GIOU (2019)DIOU (2020)CIOU (2020)EIOU (2022)αIOU (2021)SIOU (2022…

【SpringCloud】SpringCloud详解之Eureka实战

目录前言SpringCloud Eureka 注册中心一.服务提供者和服务消费者二.需求三.搭建Eureka-Server四.搭建Eureka-Client(在服务提供者配置:用户订单)前言 微服务中多个服务,想要调用,怎么找到对应的服务呢? 这里有组件的讲解 → SpringCloud组件…

深圳大学《计算机论题》作业:大数据与人工智能技术对人类生活的影响

说明 本作业为小组作业,要求基于一场报告完成(即观后感)。共分4个小题,讨论人工智能时代的伦理思考。由于版权原因,不提供报告的具体内容,只展示答题内容。 第一题 (1) 你如何看待…

winform控件PropertyGrid的应用(使运行中的程序能像vistual studio那样设置控件属性)

上周在看别人写的上位机demo代码时,发现创建的项目模板是"Windows 窗体控件库"(如下图) 生成的项目结构像自定义控件库,没有程序入口方法Main,但却很神奇能调试,最后发现原来Vistual Studio启动了一个外挂程序UserContr…

LSM(日志结构合并树)_笔记

WAL:Write Ahead Log 写前日志,顺序日志文件 1 LSM tree的定义 LSM tree: Log-Structured-Merge-Tree,日志结构合并树。 Log-Structured Merge-tree (LSM-tree) is a disk-based data structure designed to provide low-cost …

Linux操作系统学习(了解文件系统动静态库)

文章目录浅谈文件系统了解EXT系列文件系统目录与inode的关系软硬链接动静态库浅谈文件系统 当我们创建一个文件时由两部分组成:文件内容文件属性,即使是空文件也有文件属性 一个文件没有被打开是存储在磁盘中的,而磁盘是计算机中的一个机械…

你想赚的钱不一定属于你

昨天一个同行跟我说,最近有个五十多万的订单,客户是拿着别人家的设计来找的他,跟了也有大半个月了,自己明明报的价格比原设计的公司要低,客户一直说会尽快下的,他原本想着能够从这个订单里赚到几万块&#…

王道计算机组成原理课代表 - 考研计算机 第六章 总线 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “总线” 章节知识点总结的十分全面,涵括了《计算机组成原理》课程里的…

软件测试用例(3)

按照测试对象划分: 一)界面测试: 1)软件只是一种工具,软件和人的信息交流是通过界面来进行的,界面是软件和用户交流的最直接的一层,界面的设计决定了用户对于我们设计软件的第一映像,界面如同人的面孔,具有最吸引用户的…

Java中String详解(从原理理解经典面试题)

本篇文章我先通过经典面试题,筛选需要观看本篇文章的朋友,然后咱们介绍String的基本特性,通过基本特性就可以找到面试题的答案。最后咱们再深入每个面试题,通过字节码、编译原理、基本特性深入剖析所有的面试题,让大家…

jsp试卷分析管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP试卷分析管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

三、JavaScript

目录 一、JavaScript和html代码的结合方式 二、javascript和java的区别 1、变量 2、运算 3、数组(重点) 4、函数 5、重载 6、隐形参数arguments 7、js中的自定义对象 三、js中的事件 四、DOM模型 五、正则表达式 一、JavaScript和html代码的结合方…

代码执行漏洞 | iwebsec

文章目录00-代码执行漏洞原理环境01-eval函数示例命令执行写入webshellbash反弹shell02-assert函数示例webshell03-call_user_func函数示例04-call_user_func_array函数示例总结05-create_function函数示例06-array_map函数示例总结08-preg_replace漏洞函数示例07-preg_replace…

Centos 部署Oracle 11g

Centos 部署Oracle 11g部署Oracle 11g准备工作服务器信息oracle安装包服务器准备oracle环境安装Oracle静默方式配置监听以静默方式建立新库及实例部署Oracle 11g 在SpringMVC模式下开发web项目,必然会使用到关系型数据库来存储数据,目前使用比较多的关系…

18、多维图形绘制

目录 一、三维图形绘制 (一)曲线图绘制plot3() (二)网格图绘制 mesh() (三)曲面图绘制 surf() (四)光照模型 surfl() (五)等值线图(等高线图)绘制 cont…

电力系统系统潮流分析【IEEE 57 节点】(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…

C语言函数:字符串函数及模拟实现strcmp()

C语言函数&#xff1a;字符串函数及模拟实现strcmp() strcmp()函数&#xff1a; 作用&#xff1a;进行字符串的比较大小。 引入&#xff1a;如下代码&#xff0c; #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int main() {char* p "wan";char* q &qu…

Spring MVC源码解析——HandlerMapping(处理器映射器)

Sping MVC 源码解析——HandlerMapping处理器映射器1. 什么是HandlerMapping2. HandlerMapping2.1 HandlerMapping初始化2.2 getHandler解析3. getHandlerInternal()子类实现3.1 AbstractUrlHandlerMapping与AbstractHandlerMethodMapping的区别3.2 AbstractUrlHandlerMapping3…

MySQL实战解析底层---全局锁和表锁:给表加个字段怎么有这么多阻碍

目录 前言 全局锁 表级锁 前言 数据库锁设计的初衷是处理并发问题作为多用户共享的资源&#xff0c;当出现并发访问的时候&#xff0c;数据库需要合理地控制资源的访问规则而锁就是用来实现这些访问规则的重要数据结构根据加锁的范围&#xff0c;MySQL 里面的锁大致可以分成…

js正则表达式以及元字符

0、常用的正则表达式规则 手机号 const reg /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/;密码 const reg /^[a-zA-Z0-9]{6,20}$/;验证码 const reg /^\d{6}$/;1、正则表达式的介绍与使用 正则表达式(Regular Expression)是用于匹配字符串中字符组合…