懒人的法宝——办公自动化!
沒錯!辦公自動化他來了!果然,代碼都是懶人發明出來的。接下來讓我們一起來看看這個批改作業的自動化腳本吧!學會了這種思想可以幫助我們高效解決許多重復性的工作,比如說批量修改文件的名稱、類型、位置等等,快讓我們通過一個案例一起學起來吧!
一、什么是辦公自動化??
Python辦公自動化主要是批量化、自動化、定制化解決數據問題,目前主要分為三大塊:自動化office、自動化機器人、自動化數據服務。辦公自動化(Office Automation,簡稱OA)是將現代化辦公和計算機技術結合起來的一種新型的辦公方式。辦公自動化沒有統一的定義,凡是在傳統的辦公室中采用各種新技術、新機器、新設備從事辦公業務,都屬于辦公自動化的領域。?通過實現辦公自動化,或者說實現數字化辦公,可以優化現有的管理組織結構,調整管理體制,在提高效率的基礎上,增加協同辦公能力,強化決策的一致性 。
二、實戰案例
有一個子目錄“zuoye”有若干文本文件,gbk編碼。分別存儲了每個學生提交上來的算術作業,文件名是學生的學號。算術作業包括+-*/,每行一道題設計一個自動批改程序,要求完成以下功能允許每個數前后可能有空白,允許結果為負數的情況,運算的數均為正整數。除法只考慮能整除的情況,要考慮可能有空白行,可能出現在文件的任意位置空白行不計入總題數,格式錯誤的題數計入總題數將批改結果保存到文件“results.txt“”,每一行記錄學號,答對的百分比。
txt文件如下:
?需要的結果如下:
三、思路描述
?四、完整代碼
import os import rename_list = [] allname_list = [] result_dic = {}target = os.walk("zuoye")for root, ds, fs in target:for f in fs:allname_list.append(f)name_list.append(f[:7:])def calculator(expression):if "+" in expression:sign = "+"elif "-" in expression:sign = "-"elif "*" in expression:sign = "*"else:sign = "/"num_list_1 = []num_list_2 = []split_list_1 = re.split("[=]", expression)split_list_2 = re.split("[*,=,+,/,-]", expression)for i in split_list_1:num_list_1.append(i.replace(" ", ""))if int(num_list_1[-1]) < 0:for i in split_list_2:num_list_2.append(i.replace(" ", ""))num_1 = num_list_2[0]num_2 = num_list_2[1]num_3 = num_list_2[-1]try:int(num_1) * int(num_2) * int(num_3)except ValueError:return 0else:if -int(num_3) == eval(f"{num_1}{sign}{num_2}"):return 1else:return 0else:for i in split_list_2:num_list_2.append(i.replace(" ", ""))num_1 = num_list_2[0]num_2 = num_list_2[1]num_3 = num_list_2[2]try:int(num_1) * int(num_2) * int(num_3)except ValueError:return 0else:if int(num_3) == eval(f"{num_1}{sign}{num_2}"):return 1else:return 0def func(num):r = open("zuoye"+'\\{0}'.format(allname_list[num]),encoding="GBK")tem_list = []result_list =[]line = r.readline()while line:# isspace()方法判斷當該行是空行時,跳過該行if line.isspace():line = r.readline()else:line = line.strip('\n') #去掉列表中每一個元素的換行符tem_list.append(line)line = r.readline()for i in tem_list:result_list.append(calculator(i))result_dic[name_list[num]] = sum(result_list)/len(result_list)Note = open('result.txt',mode='w') for i in range(0,len(allname_list)):func(i)Note.writelines([str(list(result_dic.keys())[i])," ",str(list(result_dic.values())[i]),"\n"]) #\n 換行符五、代碼講解
總結
以上是生活随笔為你收集整理的懒人的法宝——办公自动化!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构】经典习题
- 下一篇: 【rviz_plugin Goal3DT