天然气部门档案培训案例:零门槛搭建自动化管理工具

一、开发环境准备与依赖安装

在开始构建天然气部门档案培训管理系统之前,必须先配置好Python运行环境。本系统基于Python 3.9及以上版本开发,利用pandas进行高效数据处理,使用openpyxl处理Excel文件读写。

1. 安装Python环境

如果你的电脑尚未安装Python,请访问Python官网下载安装包。推荐直接下载Windows installer(64-bit)。安装过程中,务必勾选"Add Python to PATH"选项,这能避免后续在命令行中无法识别python命令的常见错误。

2. 安装必要依赖库

打开命令行工具(Win键+R输入cmd回车),依次执行以下两条命令进行依赖安装:

pip install pandas
pip install openpyxl

如果下载速度过慢,建议使用国内镜像源加速安装:

pip install pandas openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

二、档案数据结构标准化设计

为了确保天然气部门培训档案的规范性和可追溯性,我们需要设计一套标准化的Excel数据表结构。系统将自动生成一个名为gas_training_records.xlsx的文件,如果文件已存在则直接读取。

核心字段定义如下:

  • 工号 (ID):员工唯一标识,文本格式。
  • 姓名:员工姓名。
  • 部门:所属部门,如"输配部"、"安检部"。
  • 培训项目:具体培训内容,如"燃气安全规范"、"管道巡检实操"。
  • 培训日期:格式为YYYY-MM-DD。
  • 考核结果:枚举值,仅限"通过"或"不通过"。
  • 有效期至:证书或培训结果的有效截止日期,用于自动预警。

三、核心管理脚本编写

在本地新建一个文本文件,将其重命名为gas_manager.py。我们将所有的业务逻辑封装在这个脚本中。该脚本包含初始化、录入、查询预警三个核心功能。

以下是完整的源代码,请直接复制并保存:

import pandas as pd
import os
from datetime import datetime, timedelta
定义常量
FILE_NAME = 'gas_training_records.xlsx'
COLUMNS = ['工号', '姓名', '部门', '培训项目', '培训日期', '考核结果', '有效期至']
def init_excel():
"""初始化Excel文件,如果不存在则创建并写入表头"""
if not os.path.exists(FILE_NAME):
df = pd.DataFrame(columns=COLUMNS)
df.to_excel(FILE_NAME, index=False)
print(f"系统初始化完成,已创建档案文件:{FILE_NAME}")
else:
print(f"检测到档案文件:{FILE_NAME},准备加载...")
def load_data():
"""读取Excel数据"""
try:
return pd.read_excel(FILE_NAME)
except Exception as e:
print(f"读取文件失败:{e}")
return pd.DataFrame(columns=COLUMNS)
def save_data(df):
"""保存数据到Excel"""
try:
df.to_excel(FILE_NAME, index=False)
print("数据保存成功!")
except Exception as e:
print(f"保存文件失败:{e}")
def add_record():
"""交互式添加培训记录"""
df = load_data()
print("\n 录入新培训档案 ")
获取用户输入,并进行简单的非空校验
emp_id = input("请输入工号: ").strip()
name = input("请输入姓名: ").strip()
dept = input("请输入部门: ").strip()
project = input("请输入培训项目: ").strip()
train_date = input("请输入培训日期(YYYY-MM-DD): ").strip()
result = input("请输入考核结果(通过/不通过): ").strip()
valid_until = input("请输入有效期至(YYYY-MM-DD): ").strip()
构建新数据字典
new_data = {
'工号': [emp_id],
'姓名': [name],
'部门': [dept],
'培训项目': [project],
'培训日期': [train_date],
'考核结果': [result],
'有效期至': [valid_until]
}
new_df = pd.DataFrame(new_data)
合并数据
df_combined = pd.concat([df, new_df], ignore_index=True)
save_data(df_combined)
def check_validity():
"""检查档案有效期,生成预警报告"""
df = load_data()
if df.empty:
print("当前无档案数据。")
return
print("\n 档案有效期预警检查 ")
将有效期列转换为日期格式,errors='coerce'将无法转换的设为NaT
df['有效期至'] = pd.to_datetime(df['有效期至'], errors='coerce')
today = pd.to_datetime(datetime.now().strftime('%Y-%m-%d'))
筛选过期或即将过期(30天内)的记录
过期:有效期 < 今天
expired = df[df['有效期至'] < today]
即将过期:今天 <= 有效期 < 今天 + 30天
warning_date = today + timedelta(days=30)
warning = df[(df['有效期至'] >= today) & (df['有效期至'] <= warning_date)]
if not expired.empty:
print(f"\n【严重警告】发现 {len(expired)} 条已过期档案:")
print(expired[['工号', '姓名', '培训项目', '有效期至']].to_string(index=False))
else:
print("\n【正常】无已过期档案。")
if not warning.empty:
print(f"\n【提醒】发现 {len(warning)} 条即将过期档案(30天内):")
print(warning[['工号', '姓名', '培训项目', '有效期至']].to_string(index=False))
else:
print("【正常】无即将过期档案。")
def query_records():
"""简单查询功能"""
df = load_data()
if df.empty:
return
print("\n 档案查询 ")
print("1. 按工号查询")
print("2. 查看所有")
choice = input("请选择查询方式: ")
if choice == '1':
key = input("请输入工号: ").strip()
result = df[df['工号'] == key]
if not result.empty:
print(result.to_string(index=False))
else:
print("未找到该工号记录。")
elif choice == '2':
print(df.to_string(index=False))
def main():
init_excel()
while True:
print("\n====== 天然气部门档案培训管理系统 ======")
print("1. 录入培训档案")
print("2. 查询档案")
print("3. 档案有效期预警")
print("4. 退出系统")
choice = input("请输入功能编号: ").strip()
if choice == '1':
add_record()
elif choice == '2':
query_records()
elif choice == '3':
check_validity()
elif choice == '4':
print("系统已退出。")
break
else:
print("输入无效,请重新输入。")
if __name__ == "__main__":
main()

四、功能模块逻辑详解

为了确保大家能够理解代码背后的逻辑,这里对关键模块进行简要解析,方便后续根据实际业务进行微调。

1. 数据持久化处理

代码中使用了pd.to_excelpd.read_excel。这里没有使用数据库(如MySQL),而是直接操作Excel,原因在于Excel对于非技术人员更加友好,且天然气部门的培训档案通常需要定期上报给管理层,Excel格式兼容性最好。每次操作时,脚本会将全量数据读入内存,操作完成后覆盖写入,对于几千条以内的档案数据,这种性能完全足够且逻辑最简单。

2. 日期计算与预警

天然气部门档案培训案例:零门槛搭建自动化管理工具

check_validity函数中,使用了pandas的时间序列功能。通过pd.to_datetime(..., errors='coerce'),系统可以自动容错处理格式错误的日期。预警逻辑分为两部分:一是筛选“有效期 < 今天”的记录,标记为严重警告;二是筛选“今天 + 30天”内的记录,标记为提醒。这对于天然气行业的安全资质复审至关重要。

3. 异常处理机制

在文件读写环节加入了try-except块。如果Excel文件正在被其他程序(如WPS或Microsoft Excel)打开,写入操作会报错。有了异常捕获,程序会提示“保存文件失败”而不会直接崩溃,用户可以关闭Excel后重试。

五、实操运行与落地步骤

代码编写完成后,按照以下步骤即可立即投入使用。

1. 启动系统

在存放gas_manager.py文件的文件夹内,按住Shift键并点击鼠标右键,选择“在此处打开PowerShell窗口”或“命令提示符”。输入以下命令启动:

python gas_manager.py

如果是首次运行,控制台会提示“系统初始化完成”,并在同目录下生成Excel文件。

2. 录入模拟数据

在菜单中选择1,按照提示输入以下测试数据,验证录入功能:

工号: 1001
姓名: 张伟
部门: 输配部
培训项目: 燃气管网巡检
培训日期: 2023-10-01
考核结果: 通过
有效期至: 2024-10-01

再次录入一条即将过期的数据用于测试预警功能:

工号: 1002
姓名: 李强
部门: 安检部
培训项目: 客户户内安检
培训日期: 2023-01-01
考核结果: 通过
有效期至: 2023-11-20  (假设当前日期接近此日期)

3. 执行预警检查

返回主菜单,选择3。系统将自动对比当前日期与“有效期至”字段。如果设置的数据符合过期或即将过期条件,屏幕上会直接打印出对应员工的工号、姓名和培训项目。这一功能可以作为每周例行检查的自动化工具,无需人工逐条翻阅Excel表格。

4. 数据核对

退出程序(或保持运行),直接双击打开生成的gas_training_records.xlsx文件,你会发现刚才通过命令行录入的数据已经整齐地保存在表格中。此时,你还可以利用Excel的筛选、透视表功能进一步生成报表,实现了“程序录入+Excel分析”的混合工作流。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统