读取文件夹下成员生成名单(自动化实战1)

背景

暑期在一家国企人力资源部实习,尽是些杂活,悠闲且乏味。

今天主管要求将一堆(大概千余份)过期员工合同的编号和员工名字,合同格式各式各样(图片、PDF、文件夹),并且需要根据前部分序号排序,通过手工一个个敲入Excel显然太蠢,想到可以通过python程序操作完成。

目的

嫌麻烦,想偷懒,为了摸鱼不择手段。

其他应用

读取文件在计算机科学中被广泛使用,特别是在数据处理、机器学习、人工智能和自然语言处理等领域。在这些领域,数据往往存储在文件中,需要使用读取文件的技术来提取和分析数据。

数据样式

这里由于涉及公司隐私,故自制了一份类似的数据,置于源python文件统计目录的data文件夹下:

库导入和Excel创建

import os
import xlwt
import re
path = r'./data/过期人员'  # 数据存放路径

# 获取代码文件夹下的所有文件名
filenames = os.listdir(path)

# 创建一个新的 Excel 文件
workbook = xlwt.Workbook()

# 添加一个工作表
worksheet = workbook.add_sheet('Sheet1')

 数据读取

这里需要创建一个容器存放文件夹下所有的员工信息

  • 利用enumerate()函数对文件夹下的内容进行遍历
  • 确定内容格式——如果是成员信息是文件夹格式就不需要改,如果是pdf格式或者jpg格式就需要去掉“.”及后面的内容
# 创建一个列表用于存放员工信息
namelist = []
# 写入文件名
for i, filename in enumerate(filenames):
    if os.path.isfile(os.path.join(path, filename)):
        filename = filename.split('.')[0]
    namelist.append(filename)

 利用split()函数将读取到的pdf或jpg格式员工信息按符号“.”切分,取第0部分,即“.”号之前的内容,存入列表中。

排序

 这样保存下来的员工信息序号是不正常的,需要根据符号“-”前面的所有数字进行排序,按理说2号的张三应该是排在最前面的,想了想,用re库构建正则表达式取数后再排序。

com = re.compile(r'(.+)-')
namelist = sorted(namelist, key=lambda item: int(re.findall(com, item)[0]))
for each in namelist:
    print(each)

 好了,正常了,就是这样。

compile(r'(.+)-')就是识别“-”号前的所有内容,findall()取出所有这样的内容,然后我们用到的就是第[0]个,把这个内容转换为int格式,然后才能用sort()排序。

 

写入Excel并保存

for i in range(len(namelist)):
    worksheet.write(i, 0, namelist[i])

# 保存文件
workbook.save('./data/过期人员名单.xls')

 

 完整简要代码

import os
import xlwt
import re
path = r'./data/过期人员'
# 获取代码文件夹下的所有文件名
filenames = os.listdir(path)
# 创建一个新的 Excel 文件
workbook = xlwt.Workbook()
# 添加一个工作表
worksheet = workbook.add_sheet('Sheet1')

# 创建一个列表用于存放员工信息
namelist = []
# 写入文件名
for i, filename in enumerate(filenames):
    if os.path.isfile(os.path.join(path, filename)):
        filename = filename.split('.')[0]
    namelist.append(filename)

com = re.compile(r'(.+)-')
namelist = sorted(namelist, key=lambda item: int(re.findall(com, item)[0]))


for i in range(len(namelist)):
    worksheet.write(i, 0, namelist[i])
# 保存文件
workbook.save('./data/过期人员名单.xls')

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值