制作一个简单的部门员工知识分享的python抽取脚本

python

需求:

基于公司的文化和公司部门间以及员工之间的工作需求状态,或者想要了解某一些技能、专业方面的知识需求。促进并提高员工们的技能认知和技术水平。

详细代码如下:

先说一下存入csv表格的表头字段:

1、姓名:

从名单中随机抽取,每次抽取后,后面都会进行判断,将已分享过的人员名单剔除,保证人员不会重复

2、知识分享内容:

python参数来指定,就是运行程序是指定分享内容,脚本才能够正常运行,否则报错

这里用的是sys模块中的argv方法来取到指定参数,并存入csv文件中

3、抽取日期:

本来用的是time模块中的 time.strftime("%Y-%m-%d")方式,发现并不完美,只有抽取的日期,没有讲解的时期,所以后来改为datetime模块

today = datetime.date.today()

4、分享日期:

基于抽取日期,也给员工分享准备的时间,一周后(7天后)进行分享

week_day = today + datetime.timedelta(days=7)

效果展示:

这里有一些注意的点:

1、每次写入数据时可能会出现空行的情况:

添加newline=""即可解决

2、数据写入可能会出现表头-数据,表头-数据这种情况

所以这里用了列表推到式,判断:如果表里有数据,则只进行写入数据;

如果表里没有数据,则写入表头,同时写入数据

with open("111.csv","a",encoding='utf-8',newline="") as f:

k = csv.writer(f, dialect="excel")

with open("111.csv", "r", encoding='utf-8', newline="") as f:

reader = csv.reader(f)

if not [row for row in reader]:

k.writerow(["姓名", "年龄", "特长"])

k.writerow(list)

else:

k.writerow(list)

网上找的原办法,我修改了一下

3、还有一个隐藏的问题,就是如果我把列表推导式放到下方进行判断,不知道为什么会为空,不知道是两次for循环的问题还是…,所以会造成上述问题,表头-数据,表头-数据。这个原因我还不知道,请各位看官解答了,哈哈

import random

import csv

import time

import datetime

import sys

#员工列表

tablePersonnel = \

[

'刘嘉源','李沁鈺','李易','李星泽','梁晴','魏子萱','魏皓阳',

'薛纪平','薛金慧','崔东','崔俊宇','闫荣轩','闫梦','纪玉秋'

]

#定义读写csv文件函数

def writeCsv():

#以追加模式打开csv文件,如果没有该文件则创建

with open( 'csvTest.csv','a',newline='') as f:

header = ['姓名', '知识分享内容', '抽取日期','分享日期']#表头

writer_obj=csv.DictWriter(f,header)#创建写入对象

#以读模式打开csv文件

with open('csvTest.csv', 'r', newline='') as f:

reader_obj = csv.DictReader(f)#创建读对象

#将reader_obj生成列表推导式

gen = [i for i in reader_obj]

# print(gen)

#如果gen不为空,不写入表头字段。进行for循环,取出文件中的姓名和员工名单做判断,如果在名单中

#则从人员名单中剔除

if gen:

for list in gen:

#将取出的orderDict对象转换为字典,并取出员工姓名

user = dict(list)['姓名']

# print(user)

#从列表剔除文件中存在的员工姓名,再做随机抽取

if user in tablePersonnel:

tablePersonnel.remove(user)

name = random.choice(tablePersonnel)

#date = time.strftime("%Y-%m-%d")

today = datetime.date.today()

week_day = today + datetime.timedelta(days=7)

values = [

{'姓名': name,

'知识分享内容': sys.argv[1],

'抽取日期': today,

'分享日期':week_day}]

writer_obj.writerows(values)

#如果gen为空则创建表头(字段)并写入数据

else:

name = random.choice(tablePersonnel)

# date = time.strftime("%Y-%m-%d")

today = datetime.date.today()

week_day = today + datetime.timedelta(days=7)

values = [

{'姓名': name,

'知识分享内容': sys.argv[1],

'抽取日期': today,

'分享日期':week_day}]

writer_obj.writeheader()

writer_obj.writerows(values)

if __name__ == "__main__": #作为脚本执行

writeCsv()

以上是 制作一个简单的部门员工知识分享的python抽取脚本 的全部内容, 来源链接: utcz.com/z/389000.html

回到顶部