在开始编写档案开放鉴定工具之前,必须先配置好Python运行环境。本指南基于Python 3.8及以上版本编写,利用pandas库进行高效的数据处理,使用openpyxl库处理Excel文件。请严格按照以下步骤操作,确保环境一致。
检查当前系统是否已安装Python。在终端或命令行中输入以下命令:
python --version
如果未安装或版本过低,请前往Python官网下载安装包进行安装。环境确认无误后,执行以下命令安装必要的第三方依赖库。这些库是处理Excel数据和逻辑判断的核心组件:
pip install pandas openpyxl
安装过程中请确保网络连接畅通,若下载速度过慢,可使用国内镜像源进行安装,例如使用清华源的命令如下:
pip install pandas openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成后,即具备了编写自动化鉴定脚本的所有基础条件。
为了实现零门槛落地,我们采用Excel作为数据输入源,这是档案部门最常用的数据格式。你需要准备一个.xlsx格式的文件,作为待鉴定的档案库。文件的第一行必须作为表头,且字段名称必须严格与下表一致,否则程序将无法读取正确字段。
请在本地新建一个Excel文件,命名为待鉴定档案数据.xlsx,并设置以下列:
为了测试程序效果,建议在Excel中预填几条测试数据。例如:
档案开放鉴定通常遵循“三性”原则,即时间性、密级性和内容敏感性。在编写代码前,我们需要明确鉴定的硬性逻辑规则,本脚本将内置以下核心规则,所有不符合开放条件的档案将被标记为“控制使用”。
规则一:封闭期限制(时间性)
根据《档案法》及相关规定,一般档案自形成之日起满30年方可开放。但在本脚本中,我们将此年限设为可配置参数,默认为30年。计算逻辑为:当前年份 - 档案形成年份 >= 30年。如果不满30年,直接判定为不开放。
规则二:密级审查(密级性)
无论时间是否满足30年,只要档案的“密级”字段包含“机密”、“绝密”字样,或者当前密级不为“公开”或“内部”,则强制判定为不开放。这是安全红线,程序必须严格执行。
规则三:敏感词过滤(内容敏感性)
即便时间和密级都符合要求,如果档案题名中包含特定的敏感词汇(如“人事任免”、“纪检案件”、“未公开”等),该档案也将被拦截,不进入开放名单。这步操作是为了防止标题直白但内容敏感的档案误开放。
新建一个文本文件,将其重命名为archive_appraisal.py。将以下完整的Python代码直接复制粘贴到文件中。这段代码包含了数据读取、规则判断、结果导出的全套逻辑,无需任何修改即可运行。
```python
import pandas as pd
from datetime import datetime
import os
配置参数区域
INPUT_FILE = '待鉴定档案数据.xlsx'
OUTPUT_FILE = '鉴定结果报告.xlsx'
OPEN_YEAR_LIMIT = 30 开放年限门槛,默认30年
SENSITIVE_KEYWORDS = ['人事', '任免', '纪检', '案件', '隐私', '审计'] 敏感词库
def appraise_archive(row):
"""
核心鉴定函数:对单行数据进行多维度判断
返回:'开放' 或 '控制使用'
"""
current_date = datetime.now()
1. 提取数据并进行预处理
try:
处理日期格式,兼容Excel的序列号日期或字符串日期
if isinstance(row['形成日期'], str):
formation_date = datetime.strptime(row['形成日期'], '%Y-%m-%d')
else:
假设是Excel的标准日期格式或时间戳
formation_date = pd.to_datetime(row['形成日期'])
except Exception as e:
return f"日期格式错误-{res}"
archive_title = str(row['题名'])
security_level = str(row['密级']).strip()
2. 规则一:时间性审查
计算年份差

years_passed = current_date.year - formation_date.year
if years_passed < OPEN_YEAR_LIMIT:
return "控制使用(未满封闭期)"
3. 规则二:密级审查
如果密级包含机密或绝密,直接封存
if '机密' in security_level or '绝密' in security_level:
return "控制使用(涉密)"
4. 规则三:敏感词审查
检查题名中是否包含敏感词
for keyword in SENSITIVE_KEYWORDS:
if keyword in archive_title:
return f"控制使用(含敏感词:{keyword})"
5. 所有规则通过,准予开放
return "开放"
def main():
print(f" 开始执行档案开放鉴定任务 ")
print(f"读取源文件: {INPUT_FILE}")
检查文件是否存在
if not os.path.exists(INPUT_FILE):
print(f"错误:未找到文件 {INPUT_FILE},请确认文件名是否正确。")
return
try:
读取Excel数据
df = pd.read_excel(INPUT_FILE)
print(f"成功读取 {len(df)} 条档案记录。")
执行鉴定逻辑
axis=1 表示按行遍历,apply函数将appraise_archive应用到每一行
df['鉴定结果'] = df.apply(appraise_archive, axis=1)
保存结果到新文件
df.to_excel(OUTPUT_FILE, index=False)
print(f"鉴定完成!结果已保存至: {OUTPUT_FILE}")
简单统计输出
result_counts = df['鉴定结果'].value_counts()
print("\n 鉴定结果统计 ")
for status, count in result_counts.items():
print(f"{status}: {count} 条")
except Exception as e:
print(f"程序运行出错: {e}")
if __name__ == '__main__':
main()
```
这段代码使用了pandas的apply方法进行批量向量化处理,相比传统的for循环,处理数万条数据时速度有显著提升。代码中的try-except结构用于捕获日期解析错误,防止因某条数据格式错误导致整个程序崩溃。
代码保存完毕后,即可进行实际操作。请确保待鉴定档案数据.xlsx和archive_appraisal.py位于同一个文件夹内。在文件夹空白处按住Shift键并右击,选择“在此处打开PowerShell窗口”或“命令提示符”。
在命令行中输入以下命令启动鉴定程序:
python archive_appraisal.py
程序启动后,终端窗口会实时显示执行进度。你会看到“成功读取 X 条档案记录”的提示。处理速度取决于你的CPU性能和数据量,通常几千条数据在1秒内即可完成。
程序运行结束后,文件夹内会自动生成一个名为鉴定结果报告.xlsx的新文件。打开该文件,你会发现原数据的最后增加了一列名为“鉴定结果”。该列会明确标识每条档案的状态:
你可以通过Excel的筛选功能,快速筛选出所有“开放”的档案,作为下一步发布的正式名单。对于被标记为“控制使用”的档案,可根据括号内的原因进行人工复核或继续延期封存。至此,整个档案开放鉴定的自动化流程已完全打通。