欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > python办公脚本开发学习

python办公脚本开发学习

2024/10/25 7:17:51 来源:https://blog.csdn.net/qq_62612080/article/details/141750061  浏览:    关键词:python办公脚本开发学习

功能介绍

此脚本从一个text文件夹中读取一长串文本,其中含有ipv4的地址,然后通过正则将ipv4的地址以数组的形式存储起来。通过与xls表格中的样本数据进行对比,进行过滤,实现功能为:筛选出除了部门为办公领导和生产技术的其他所有下班未关机的所有数据,并生成一个新的表格。

python代码

from openpyxl import Workbook
import xlrd
import re# 打开并读取记事本文件,返回文件内容
def read_from_notepad(file_name):with open(file_name, 'r', encoding='utf-8') as file:text = file.read()# 这里可以选择打印或不打印文件内容,以及是否添加休眠# print("正在打印文本内容请稍等......")# time.sleep(2)# print(text)return text  # 返回文件内容# 提取文本中的IPv4地址
def extract_ipv4(text):ipv4_pattern = r'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b'ipv4_addresses = re.findall(ipv4_pattern, text)return ipv4_addressesdef read_excel_xls(file_path, ip_list):# 打开原始Excel文件workbook = xlrd.open_workbook(file_path)# 通过索引获取第一个工作表sheet = workbook.sheet_by_index(0)# 创建一个新的工作簿new_workbook = Workbook()new_sheet = new_workbook.active# 写入标题行new_sheet.append(["IP地址", "部门", "使用人"])# 遍历原始工作表的所有行for row_index in range(sheet.nrows):# 跳过第一行(标题行)if row_index == 0:continue# 获取IP地址ip = sheet.cell_value(row_index, 0)# 如果IP地址在传入的IP数组中if ip in ip_list:# 获取部门和使用人数据部门 = sheet.cell_value(row_index, 1)使用人 = sheet.cell_value(row_index, 2)# 如果部门不是公司领导或者是生产技术部if 部门 != "公司领导" and 部门 != "生产技术部":# 将数据写入新的工作表new_sheet.append([ip, 部门, 使用人])# 保存新的Excel文件new_workbook.save("output.xls")# 使用函数
file_name = 'text.txt'
text = read_from_notepad(file_name)  # 接收从文件中读取的文本
ip_list = extract_ipv4(text)  # 提取IPv4地址
file_path = './Subnet Usage Table.xls'
read_excel_xls(file_path, ip_list)
print("已生成xls表格。")

代码说明

需要在同目录下创建一个名为Subnet Usage Table.xls的表格和一个名为text.txt的文本文件,最后在同目录下输出一个名为output.xls的表格。

心得

尽量使用函数化思维编程,而且就个人而言我在写脚本时习惯多建立一个python文件专门用来调试某些函数,当某个函数功能正常时,我再把他放回主python文件中,这样可以保证整个python文件的可读性和思维清晰。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com