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作用是:刚开始用户选的哪个程序就执行哪个操作。同时,这里四块代码是有规律的,都是先确定了批量生成的东西的名字,然后是确定了要在哪个目录下生成,最后是生成保存。
总结
批量新建这玩意儿目前想到的就这些了,后续我想到其它新的点子再往这篇博客上编辑添加。批量删除的就暂时不写了,工作生产上应该很少删除东西,毕竟说不定哪天会用到。

相关文章:
Python 自动化之批量处理文件(一)
批量新建目录、文档Pro版本 文章目录 批量新建目录、文档Pro版本前言一、做成什么样子二、基本思路1.引入库2.基本架构 三、用户输入模块四、数据处理模块1.excel表格数据获取2.批量数据的生成 总结 前言 我来写一个不一样的批量新建吧。在工作中,有些同学应该会遇…...
力扣72. 编辑距离
动态规划 思路: 假设 dp[i][j] 是 word1 前 i 个字母到 word2 前 j 个字母的编辑距离;那么状态 dp[i][j] 状态的上一个状态有: dp[i - 1][j],word1 前 i - 1 个字母到 word2 前 j 个字母的编辑距离,此状态再插入一个字…...
Unity中 URP Shader 的纹理与采样器的分离定义
文章目录 前言一、URP Shader 纹理采样的实现1、在属性面板定义一个2D变量用于接收纹理2、申明纹理3、申明采样器4、进行纹理采样 二、申明纹理 和 申明采样器内部干了什么1、申明纹理2、申明采样器 三、采样器设置采样器的传入格式1、纹理设置中,可以看见我们的采样…...
Electron学习第一天 ,启动项目
之前在安装官网的步骤操作,结果报错,找了好多办法,最后这种办法成功启动项目,并且没有报错,特此记录 特别提醒,最好安装淘宝镜像,npm 太慢,会导致报错问题,解决起来个人觉…...
WebService技术--随笔1
1.WebService 发展史 创建阶段(1990 年代末至 2000 年代初):在这个阶段,XML-RPC 和 SOAP 协议被引入,为跨平台和跨语言的应用程序集成提供了基础。XML-RPC 提供了一种基于 XML 的远程过程调用机制,而 SOAP…...
如何使用Docker将.Net6项目部署到Linux服务器(一)
目录 一 配置服务器环境 1.1 配置yum 1.1.1 更新yum包 1.1.2 yum命令 1.2 配置docker …...
第4章-第3节-Java中跟数组相关的几个算法以及综合应用
在写这篇博文之前,先大概说明一下,就是很常见的数组算法如求最大值、一维数组的遍历等,这里就不去专门说明了,只说一些有代表性的,然后就是冒泡排序算法很容易查阅到,这里也不专门说明了,只说明…...
AlexNet(pytorch)
AlexNet是2012年ISLVRC 2012(ImageNet Large Scale Visual Recognition Challenge)竞赛的冠军网络,分类准确率由传统的 70%提升到 80% 该网络的亮点在于: (1)首次利用 GPU 进行网络加速训练。 ÿ…...
【单调栈 】LeetCode321:拼接最大数
作者推荐 【动态规划】【广度优先搜索】LeetCode:2617 网格图中最少访问的格子数 本文涉及的知识点 单调栈 题目 给定长度分别为 m 和 n 的两个数组,其元素由 0-9 构成,表示两个自然数各位上的数字。现在从这两个数组中选出 k (k < m n) 个数字…...
TikTok与虚拟现实的完美交融:全新娱乐时代的开启
TikTok,这个风靡全球的短视频平台,与虚拟现实(VR)技术的深度结合,为用户呈现了一场全新的娱乐盛宴。虚拟现实技术为TikTok带来了更丰富、更沉浸的用户体验,标志着全新娱乐时代的开启。本文将深入探讨TikTok…...
PXI/PCIe/VPX机箱 ARM|x86 + FPGA测试测量板卡解决方案
PXI便携式测控系统是一种基于PXI总线的便携式测试测控系统,它填补了现有台式及机架式仪器在外场测控和便携测控应用上的空白,在军工国防、航空航天、兵器电子、船舶舰载等各个领域的外场测控场合和科学试验研究场合都有广泛的应用。由于PXI便携式测控系统…...
ES6 面试题 | 12.精选 ES6 面试题
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
【linux】Debian不能运行sudo的解决
一、问题: sudo: 没有找到有效的 sudoers 资源,退出 sudo: 初始化审计插件 sudoers_audit 出错 二、可用的方法: 出现 "sudo: 没有找到有效的 sudoers 资源,退出" 和 "sudo: 初始化审计插件 sudoers_audit 出错&q…...
讲解ThinkPHP的链式操作
数据库提供的链式操作方法,可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作。 使用也比较简单,假如我们现在要查询一个User表的满足状态为1的前10条记录,并希望按照用户的创建时间排序 Db::table(think_u…...
Java技术栈 —— 微服务框架Spring Cloud —— Ruoyi-Cloud 学习(二)
RuoYi项目开发过程 一、登录功能(鉴权模块)1.1 后端部分1.1.1 什么是JWT?1.1.2 什么是Base64?为什么需要它?1.1.3 SpringBoot注解解析1.1.4 依赖注入和控制反转1.1.5 什么是Restful?1.1.6 Log4j 2、Logpack、SLF4j日志框架1.1.7 如何将项目打包成指定bytecode字节…...
如何进行软件测试和测试驱动开发(TDD)?
1. 软件测试概述 1.1 什么是软件测试? 软件测试是一种评估系统的过程,目的是发现潜在的错误或缺陷。通过对软件进行测试,开发者和测试人员可以确定软件是否符合预期的需求、功能是否正常运行,以及系统是否足够稳定和可靠。 1.2…...
linux 开机启动流程
1.打开电源 2.BIOS 有时间和启动方式 3.启动Systemd 其pid为1 4.挂载引导分区 /boot 5.启动各种服务 如rc.local...
Mybatis 动态SQL的插入操作
需求 : 根据用户的输入情况进行插入 动态SQL:根据需求动态拼接SQL 用户往表中插入数据,有的数据可能不想插入,比如不想让别人知道自己的性别,性别就为空 insert into userinfo(username,password,age,gender,phone) values(?,?,?,?,?); insert into userinfo(username,…...
共建开源新里程:北京航空航天大学OpenHarmony技术俱乐部正式揭牌成立
12月11日,由OpenAtom OpenHarmony(以下简称“OpenHarmony”)项目群技术指导委员会(以下简称“TSC”)和北京航空航天大学共同举办的“OpenHarmony软件工程研讨会暨北京航空航天大学OpenHarmony技术俱乐部成立仪式”在京圆满落幕。 现场大合影 活动当天,多位重量级嘉宾出席了此次…...
企业微信机器人发送文本、图片、文件、markdown、图文信息
import requests import base64 import hashlib import json # 机器人地址的key值 key"811a1652-60e8-4f51-a1d9-231783399ad2" def path2base64(path):"""文件转换为base64:param path: 文件路径:return:"""with open(path, "rb…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
