Python 自动化之批量处理文件(一)

批量新建目录、文档Pro版本


文章目录

  • 批量新建目录、文档Pro版本
  • 前言
  • 一、做成什么样子
  • 二、基本思路
    • 1.引入库
    • 2.基本架构
  • 三、用户输入模块
  • 四、数据处理模块
    • 1.excel表格数据获取
    • 2.批量数据的生成
  • 总结


前言

我来写一个不一样的批量新建吧。在工作中,有些同学应该会遇到需要以某个excel表格为切入点,去批量的新建目录或者文档啊什么的,希望对大家有所帮助吧。


一、做成什么样子

通过读取excel文档的指定数据信息,在指定目录下、有序的、以相应的单元格的数据,进行批量新建目录、txt、docx、xlsx等。

用户需要输入的东西有:excel文档、文档里第几个sheet、从哪行那列开始、保存路径、新建数据类型(目录、txt、docx、xlsx)。

二、基本思路

1.引入库

代码如下:

from openpyxl import load_workbook
from openpyxl import Workbook
from docx import Document
import os

这是后面需要用到的一些库。


2.基本架构

代码如下:

.........        #用户输入for ........:    #主循环结构......       #获取excel表格里的信息if ......:  ......   #排除表格的单元格为空的情况else:.....    #生成数据类型选择

首先是输入模块,根据使用者输入的信息,为下面提供数据筛选规则。

其次是主循环结构,刚开始是先要获取excel表格里的信息。

然后if—else结构根据表格的信息:if下面的用来排除表格的单元格为空的情况。else用来生成数据类型选择(比如前面用户输入的是目录,这里就批量新建目录)

下面开始代码的编写。


三、用户输入模块

代码如下:

print('请输入excel文档完整路径(例子:E:\BaiduNetdiskDownload\你好.xlsx):', end='')
excel_path = input()
# 加载工作簿(这里要加载一下,创建一个实例,后面的主循环结构里会用到)
wb = load_workbook(excel_path)print('在文档的第几个工作表:', end='')
sheet = int(input())
# 选择工作表
ws = wb.worksheets[sheet-1]print(f'在第{sheet}个工作表的第几列:', end='')
lie_num = int(input())print(f'在第{sheet}个工作表的第几行开始:', end='')
hang_num = int(input())print('打算在哪个目录下批量生成(例子:D:\dsest):', end='')
parent_directory = input()print('打算在这个目录下批量生成什么(1 目录  2 txt  3 docx  4 xlsx ):', end='')
creat_type = input()

这里就对应了刚开头第一章节我所提到的东西,精确定位精确匹配。
注释写的很清楚,我就不多解释了。


四、数据处理模块

1.excel表格数据获取

代码如下:

i = 0    #这个是用来对批量新建的东西做排序for row in ws.iter_rows(min_row=hang_num):   # 遍历从所选行往后的行的数据(包括所选行)i += 1value = row[lie_num-1].value        # 获取当前行所对应的列的单元格的值order_value = f'{i}-{value}'       #后面批量新建东西的名称就用这个,开头为数字电脑会自动排序你懂得

可能会有一些绕,多看看。简单来说就是获取用户所选范围的每个单元格的值。


2.批量数据的生成

代码如下:

    if str(value) == 'None':passelse:if creat_type == '1':directory_name = str(order_value)         # 获取当前行的值并转换为字符串full_path = os.path.join(parent_directory, directory_name)os.makedirs(full_path, exist_ok=True)     # 创建目录,如果已经存在,则不抛出异常directory_name = f'{str(order_value)}.xlsx'  # 获取当前行的值并转换为字符串xls = Workbook()     # 新建一个 xlsx 文档     xls.save(full_path)  #保存elif creat_type == '2':directory_name = f'{str(order_value)}.txt'  # 获取当前行的值并转换为字符串full_path = os.path.join(parent_directory, directory_name)with open(full_path, 'a'):os.utime(full_path, None)  elif creat_type == '3':directory_name = f'{str(order_value)}.docx'  # 获取当前行的值并转换为字符串full_path = os.path.join(parent_directory, directory_name)doc = Document()     # 新建一个 Word 文档doc.save(full_path)  #保存

这段代码也是在主循环for结构的运行的,可以看出有两个if结构进行了嵌套。

最外层的if作用是:难免其中有些单元格为空,遇到了就排除了它们。

最里层的if作用是:刚开始用户选的哪个程序就执行哪个操作。同时,这里四块代码是有规律的,都是先确定了批量生成的东西的名字,然后是确定了要在哪个目录下生成,最后是生成保存。


总结

批量新建这玩意儿目前想到的就这些了,后续我想到其它新的点子再往这篇博客上编辑添加。批量删除的就暂时不写了,工作生产上应该很少删除东西,毕竟说不定哪天会用到。

在这里插入图片描述

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

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

相关文章

css 使用flex 完成瀑布流布局

瀑布流布局在商城类、文章类 app、网页中都是常用的&#xff0c;使用这样的形式&#xff0c;能过让整个页面更加的活波&#xff0c;也能让图片根据实际的大小来显示&#xff0c;更好的展示图片内容。那么代码如何实现呢 实现的效果 代码 <template><view class"…

登录/验证码/注册

登录 pom文件 <!--hutool工具类--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.9</version></dependency><!--jwt--><dependency><groupId>io.jsonw…

【解决】Windows 11检测提示电脑不支持 TPM 2.0(注意从DTPM改为PTT)

win11升级&#xff0c;tpm不兼容 写在最前面1. 打开电脑健康状况检查2. 开启tpm3. 微星主板AMD平台开启TPM2.0解决电脑健康状况检查显示可以安装win11&#xff0c;但是系统更新里显示无法更新 写在最前面 我想在台式电脑上用win11的专注模式&#xff0c;但win10不支持 1. 打…

基于自动化脚本批量上传依赖到nexus内网私服

前言 因为某些原因某些企业希望私服是不能连接外网的&#xff0c;所以需要某些开源依赖需要我们手动导入到nexus中&#xff0c;尽管nexus为我们提供了web页面。但是一个个手动导入显然是一个庞大的工程。 对此我们就不妨基于脚本的方式实现这一过程。 预期效果 笔者本地仓库…

在Node.js中MongoDB插入数据的方法

本文主要介绍在Node.js中MongoDB插入数据的方法。 目录 Node.js中MongoDB插入数据使用MongoDB原生驱动插入数据使用Mongoose插入数据 Node.js中MongoDB插入数据 在Node.js中&#xff0c;可以使用MongoDB原生驱动或Mongoose库来连接和操作MongoDB数据库。 以下是在Node.js中使用…

电子印章法律风险点及安全防范措施

公章是公司处理内外部事务的印鉴&#xff0c;公司对外的正式信函、文件、报告使用公章&#xff0c;盖了公章的文件具有法律效力。公章由公司的法定代表人执掌&#xff0c;法定代表人如果把法定代表人章与公章一同使用就代表公司行为。 随着社会数字化转型&#xff0c;电子印章及…

持续集成交付CICD:CentOS 7 安装SaltStack

目录 一、理论 1.SaltStack 二、实验 1.主机一安装master 2.主机二安装第一台minion 3.主机三安装第二台minion 4.测试SaltStack 一、理论 1.SaltStack &#xff08;1&#xff09;概念 SaltStack是基于python开发的一套C/S自动化运维工具&#xff0c;通信采用了zerom…

【UML】组件图中的供需接口与面向对象中的接口

UML&#xff08;统一建模语言&#xff09;组件图中的“供接口”&#xff08;Provided Interface&#xff09;和“需接口”&#xff08;Required Interface&#xff09;与面向对象编程中的接口概念有关联&#xff0c;但它们在应用上有所区别。 下面解释两者的关系&#xff1a; …

2023下半年软考复盘反思

工作十几年了&#xff0c;一直想考一个高级职称、但是疫情三年也没心思考&#xff0c;不想出去折腾。疫情过去&#xff0c;今年下半年想考一个&#xff0c;由于工作忙&#xff0c;准备了30天&#xff0c;成绩已经出了&#xff0c;先说结果&#xff1a;未通过。现在对这个过程反…

ElementPlus中的分页逻辑与实现

ElementPlus中的分页逻辑与实现 分页是web开发中必不可少的组件&#xff0c;element团队提供了简洁美观的分页组件&#xff0c;配合table数据可以实现即插即用的分页效果。分页的实现可以分成两种&#xff0c;一是前端分页&#xff0c;二是后端分页。这两种分页分别适用于不同…

three.js(二)

three.js&#xff08;二&#xff09; 参考前言正文简单开始(不使用任何框架)补充 粗略带过(使用Vue框架)细致讲解(比如我使用react框架)App.jsx 的进阶版 项目打包补充打包遇到的问题:原因:解决办法: 参考 https://threejs.org/docs/ 前言 上一集中,我们用到了three.js的一个…

AUTOSAR_RS_LogAndTrace中文翻译(待更)

4功能概述 5.功能要求 5.2.1.1通用型 1.日志记录应支持初始化和注册 2. 日志功能应该使应用程序提供日志信息 3. 日志功能应能和追踪应用程序之间通信&#xff0c; 4. 日志应支持对日志信息进行分组&#xff0c;使用案例&#xff1a;关联过滤所有属于一起的日志信息 5. 日志记…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十四:系统设置模块相关功能实现

一、本章内容 本章使用已实现的公共组件实现系统管理中的系统设置模块相关功能,包括菜单管理、角色管理、日志管理、用户管理、系统配置、数据字典等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 3.1 B站视频地址:

scrapy post请求——百度翻译(十四)

scrapy处理 post 请求 爬取百度翻译界面 目录 1.创建项目及爬虫文件 2.发送post请求 1.创建项目及爬虫文件 scrapy startproject scrapy_104 scrapy genspider translate fanyi.baidu.com 2.发送请求 post请求需要传递参数&#xff0c;所以就不能用start_urls和parse函数了&…

代码随想录刷题题Day12

刷题的第十二天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day12 任务 ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2 1 层序遍历 一口气做十题 102.二叉树的层序遍历 107.二叉树的…

数字化管理系统:引领企业智能化时代

随着数字化和智能化的风潮席卷而来&#xff0c;企业数字化管理系统成为提升竞争力、提高效率的不可或缺的工具。在服装管理系统、仓储管理系统等方面应用的RFID技术和数字大屏更是为企业带来了前所未有的便利和优势。 数字化管理系统的重要性&#xff1a; 数字化管理系统是企…

oracle数据恢复—Oracle报错“system01.dbf需要更多的恢复来保持一致性”的数据恢复案例

oracle数据库恢复环境&故障&#xff1a; 一台Windows server操作系统的服务器上部署Oracle数据库。 服务器意外断电导致oracle数据库报错&#xff0c;报错信息&#xff1a;“system01.dbf需要更多的恢复来保持一致性”。由于该oracle数据库并没有备份&#xff0c;仅有一些断…

算法通关村第十三关—数字与数学高频问题(白银)

数字与数学高频问题 一、数组实现加法专题 1.1 数组实现整数加法 先看一个用数组实现逐个加一的问题。LeetCode66.具体要求是由整数组成的非空数组所表示的非负整数&#xff0c;在其基础上加一。这里最高位数字存放在数组的首位&#xff0c;数组中每个元素只存储单个数字。并且…

数据库传奇:MySQL创世之父的两千金My、Maria

《数据库传奇&#xff1a;MySQL创世之父的两千金My、Maria》 一、前言 MySQL是一款备受欢迎的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;最初由瑞典公司MySQL AB开发&#xff0c;目前隶属于Oracle Corporation。在DB-Engines的排名中&#xff0c;MySQL稳…

DevOps搭建(十)-安装Harbor镜像仓库详细步骤

1、下载Harbor 官方地址: https://goharbor.io/ 下载地址: https://github.com/goharbor/harbor/tags 选择文档版本进行下载,这里我们选择v2.7.2版本 2、上传到服务器并解压 上传压缩包到服务器后,解压到/usr/local目录下,执行以下解压命令 tar -zxvf harbor-offli…