懒人的法宝——办公自动化!

简介: 懒人的法宝——办公自动化!

没错!办公自动化他来了!果然,代码都是懒人发明出来的。接下来让我们一起来看看这个批改作业的自动化脚本吧!学会了这种思想可以帮助我们高效解决许多重复性的工作,比如说批量修改文件的名称类型位置等等,快让我们通过一个案例一起学起来吧!

一、什么是办公自动化?

Python办公自动化主要是批量化、自动化、定制化解决数据问题,目前主要分为三大块:自动化office自动化机器人自动化数据服务办公自动化(Office Automation,简称OA)是将现代化办公和计算机技术结合起来的一种新型的办公方式。办公自动化没有统一的定义,凡是在传统的办公室中采用各种新技术、新机器、新设备从事办公业务,都属于办公自动化的领域。 通过实现办公自动化,或者说实现数字化办公,可以优化现有的管理组织结构,调整管理体制,在提高效率的基础上,增加协同办公能力,强化决策的一致性 。

二、实战案例

有一个子目录“zuoye”有若干文本文件,gbk编码。分别存储了每个学生提交上来的算术作业,文件名是学生的学号。算术作业包括+-*/,每行一道题设计一个自动批改程序,要求完成以下功能允许每个数前后可能有空白,允许结果为负数的情况,运算的数均为正整数。除法只考虑能整除的情况,要考虑可能有空白行,可能出现在文件的任意位置空白行不计入总题数,格式错误的题数计入总题数将批改结果保存到文件“results.txt“”,每一行记录学号答对的百分比

txt文件如下:

需要的结果如下:

三、思路描述

  1. 首先我们可以先对一个文件去操作,比如说学号为1002131的同学,我们通过读取这名称的文件,读取其中的每一行,再自定义一个函数,对其中的每一行进行判断,判断其是否计算正确,统计这个同学的正确率,用字典将姓名与正确率相关联。这样就可以得到这一位同学的正确率。
  2. 有了读取以为同学的思路,那么我们也可以通过读取一个文件夹,将文件夹中的每个同学进行操作,这样就可以得到这个文件夹下所有同学的正确率。同样我们用字典将学号与正确率相关联,便于最终输出。
  3. 经过前两步,我们已经得到一个字典,这个字典的键是每一位同学的序号,值是该同学的正确率。只要分行将对应结果输出到指定文件中就完成啦!

四、完整代码

1. import os
2. import re
3. 
4. name_list = []
5. allname_list = []
6. result_dic = {}
7. 
8. target = os.walk("zuoye")
9. 
10. for root, ds, fs in target:
11. for f in fs:
12.         allname_list.append(f)
13.         name_list.append(f[:7:])
14. 
15. def calculator(expression):
16. if "+" in expression:
17.         sign = "+"
18. elif "-" in expression:
19.         sign = "-"
20. elif "*" in expression:
21.         sign = "*"
22. else:
23.         sign = "/"
24.     num_list_1 = []
25.     num_list_2 = []
26.     split_list_1 = re.split("[=]", expression)
27.     split_list_2 = re.split("[*,=,+,/,-]", expression)
28. for i in split_list_1:
29.         num_list_1.append(i.replace(" ", ""))
30. if int(num_list_1[-1]) < 0:
31. for i in split_list_2:
32.             num_list_2.append(i.replace(" ", ""))
33.         num_1 = num_list_2[0]
34.         num_2 = num_list_2[1]
35.         num_3 = num_list_2[-1]
36. try:
37. int(num_1) * int(num_2) * int(num_3)
38. except ValueError:
39. return 0
40. else:
41. if -int(num_3) == eval(f"{num_1}{sign}{num_2}"):
42. return  1
43. else:
44. return 0
45. else:
46. for i in split_list_2:
47.             num_list_2.append(i.replace(" ", ""))
48.         num_1 = num_list_2[0]
49.         num_2 = num_list_2[1]
50.         num_3 = num_list_2[2]
51. try:
52. int(num_1) * int(num_2) * int(num_3)
53. except ValueError:
54. return 0
55. else:
56. if int(num_3) == eval(f"{num_1}{sign}{num_2}"):
57. return 1
58. else:
59. return 0
60. 
61. 
62. def func(num):
63.     r = open("zuoye"+'\\{0}'.format(allname_list[num]),encoding="GBK")
64.     tem_list = []
65.     result_list =[]
66.     line = r.readline()
67. while line:
68. # isspace()方法判断当该行是空行时,跳过该行
69. if line.isspace():
70.             line = r.readline()
71. else:
72.             line = line.strip('\n')  #去掉列表中每一个元素的换行符
73.             tem_list.append(line)
74.             line = r.readline()
75. 
76. for i in tem_list:
77.         result_list.append(calculator(i))
78.     result_dic[name_list[num]] = sum(result_list)/len(result_list)
79. 
80. 
81. Note = open('result.txt',mode='w')
82. for i in range(0,len(allname_list)):
83.     func(i)
84.     Note.writelines([str(list(result_dic.keys())[i])," ",str(list(result_dic.values())[i]),"\n"]) #\n 换行符

五、代码讲解

  1. 首先我们读取指定的文件夹,即“zuoye”文件夹,用target = os.walk("zuoye"),返回三个对象,最后一个即为所有文件的名称列表,所有我们只用对最后一个fs进行遍历就可以。将所有文件名添加到一个列表中,并另外用字符串切片的方式取出.txt。
  2. 接下来就是最关键的判断函数,这个函数的作用即判断输入的一个表达式是否正确,首先要确定符号,用if elif和else判断输入的到底是加减乘除什么类型表达式。再用正则表达式,用[*,=,+,/,-]对表达式进行切分,这里注意,如果有负数的情况,负数前面也会有-号,所以这里要用一个if语句进行判断。
  3. 将切割的结果赋值给三个变量,并且注意要用i.replace(" ", "")去除空格,要不然后面没办法用int转化。这样我们就拿到了三个数,以及他们的运算符号,我们用if int(num_3) == eval(f"{num_1}{sign}{num_2}")判断这个表达式是否正确既可以啦,如果正确返回1,如果错误返回0,即做对得1分,做错得0分。
  4. 之后,再读取文件夹里面的每一个文件,读取每一个文件的每一行,如果读到空行就跳过,不统计在里面,将读取的每一行用上面的自定义函数进行判断,统计每一个文件的总得分率,与文件总行数(去除空行)相除得到正确率。最后通过字典将该同学的学号和正确率关联起来。
  5. 最后,通过Note.writelines([str(list(result_dic.keys())[i])," ",str(list(result_dic.values())[i]),"\n"])将所得结果写入到result文件中,这样我们完成啦!


相关文章
|
3月前
|
Web App开发 人工智能 数据可视化
猫头虎 推荐:国产开源AI工具 爱派(AiPy)|支持本地部署、自动化操作本地文件的AI办公神器
爱派(AiPy)是一款国产开源AI工具,支持本地部署与自动化操作,助力数据处理与办公效率提升。基于Python Use理念,AiPy让AI直接控制本地文件,简化繁琐任务,提供高效智能的解决方案,适用于数据工程师、分析师及日常办公用户。
1492 0
|
3月前
|
安全 数据库 数据安全/隐私保护
Python办公自动化实战:手把手教你打造智能邮件发送工具
本文介绍如何使用Python的smtplib和email库构建智能邮件系统,支持图文混排、多附件及多收件人邮件自动发送。通过实战案例与代码详解,帮助读者快速实现办公场景中的邮件自动化需求。
312 0
|
3月前
|
前端开发 安全 Java
办公自动化必修课:用Python打造PDF全能处理工具
在职场中,PDF处理常令人崩溃:拆分、合并、加密等问题严重影响效率。本文教你用Python打造一个包含拆分、合并、加密、水印四大功能的PDF工具箱,通过实战代码提升办公自动化水平,让文档操作像拼乐高一样简单高效。
141 0
|
6月前
|
人工智能 安全 虚拟化
Cua:Mac用户狂喜!这个开源框架让AI直接接管你的电脑,快速实现AI自动化办公
Cua是一个结合高性能虚拟化与AI代理能力的开源框架,能在Apple Silicon上以接近原生性能运行虚拟机,并让AI直接操作系统应用。
688 17
Cua:Mac用户狂喜!这个开源框架让AI直接接管你的电脑,快速实现AI自动化办公
|
Python
Python办公自动化:删除任意页数pdf页面
Python办公自动化:删除任意页数pdf页面
305 2
Python办公自动化:删除任意页数pdf页面
|
11月前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
Python
Python办公自动化:xlwings对Excel进行分类汇总
Python办公自动化:xlwings对Excel进行分类汇总
263 1
|
10月前
|
存储 人工智能 人机交互
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
PC Agent 是上海交通大学与 GAIR 实验室联合推出的智能 AI 系统,能够模拟人类认知过程,自动化执行复杂的数字任务,如组织研究材料、起草报告等,展现了卓越的数据效率和实际应用潜力。
1155 1
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
|
11月前
|
数据采集 IDE 测试技术
Python实现自动化办公:从基础到实践###
【10月更文挑战第21天】 本文将探讨如何利用Python编程语言实现自动化办公,从基础概念到实际操作,涵盖常用库、脚本编写技巧及实战案例。通过本文,读者将掌握使用Python提升工作效率的方法,减少重复性劳动,提高工作质量。 ###
303 1
|
11月前
|
数据管理 程序员 数据处理
利用Python自动化办公:从基础到实践####
本文深入探讨了如何运用Python脚本实现办公自动化,通过具体案例展示了从数据处理、文件管理到邮件发送等常见办公任务的自动化流程。旨在为非程序员提供一份简明扼要的实践指南,帮助他们理解并应用Python在提高工作效率方面的潜力。 ####
下一篇
oss教程