日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 自动化办公 随机生成题库文档

發(fā)布時(shí)間:2023/12/14 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 自动化办公 随机生成题库文档 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

HI,大家好,我是最渣的黑客,很久沒(méi)有更新文章了,今天更新一篇,利用python 做一個(gè)隨機(jī)生成的題庫(kù)文檔。對(duì)一些老師考試檢測(cè)等等,可能會(huì)是一個(gè)很好的幫助。

首先要準(zhǔn)備的是很多題庫(kù)在一個(gè)EXCEL 表中,題目為第一列,答案在第二列。

如下:

?接下來(lái)是代碼階段。我這里是開(kāi)發(fā)的窗口化程序。簡(jiǎn)單易懂。復(fù)制即可使用。

開(kāi)發(fā)環(huán)境:

解釋器:python 3.6.8

編輯器:pycharm 2019.1.3

編碼格式:utf-8

需要安裝的庫(kù):python-docx,pandas,xlrd 【1.2.0版本】,xlwt,

溫馨提示:如果你運(yùn)行出來(lái)各種報(bào)錯(cuò),唯一要檢查的是你的一些格式問(wèn)題,庫(kù)安裝,環(huán)境問(wèn)題。?

#encoding:utf-8 import pandas as pd from docx.enum.text import WD_PARAGRAPH_ALIGNMENT from docx import Document from docx.shared import Pt from docx.oxml.ns import qn import random import os from docx.shared import Pt,RGBColor import tkinter as tk from tkinter import filedialog import threadingwindow = tk.Tk()window.title('隨機(jī)生成題庫(kù)器') window.geometry("400x540") # 窗口大小(長(zhǎng)*寬)label = tk.Label(window,text='題庫(kù)數(shù)量', #text為顯示的文本內(nèi)容bg='black',fg='white',justify='left') #bg為背景色,fg為前景色 label.pack(padx=50,pady=2)textExample = tk.Text(window, width=20, height=2) # 文本輸入框 textExample.pack(padx=50,pady=10) # 把Text放在window上面,顯示Text這個(gè)控件 # textExample.insert("insert","請(qǐng)輸入需要多少題為一個(gè)文件庫(kù)")label = tk.Label(window,text="題庫(kù)文檔數(shù)量", #text為顯示的文本內(nèi)容bg='black',fg='white',justify='left') #bg為背景色,fg為前景色 label.pack(padx=50,pady=2)textExample2 = tk.Text(window, width=20, height=2) # 文本輸入框 textExample2.pack(padx=50,pady=10) # 把Text放在window上面,顯示Text這個(gè)控件label = tk.Label(window,text="文檔名稱", #text為顯示的文本內(nèi)容bg='black',fg='white',justify='left') #bg為背景色,fg為前景色 label.pack(padx=50,pady=2)textExample3 = tk.Text(window, width=20, height=2) # 文本輸入框 textExample3.pack(padx=50,pady=10) # 把Text放在window上面,顯示Text這個(gè)控件def readfile(filepath):"""讀取EXCEL文件"""datalist = []for d in filepath:data = pd.read_excel(d)data = data.values.tolist()for d in data:title = d[0]content = d[1]tc = [title, content]datalist.append(tc)return datalistdef wordDoc(readfile,filename,filpaths,generateNumber):"""寫(xiě)入word文檔filename: 文件名稱generateNumber:隨機(jī)生成多少題"""data = readfiledataramdom = random.sample(data,int(generateNumber))doctitle = filenamedoc = Document()doc.styles['Normal'].font.name = u'宋體'doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')# doc.styles['Normal'].font.color.rgb = RGBColor(0, 0, 0)#輸入文檔標(biāo)題t = doc.add_paragraph()t1 = t.add_run(doctitle) # 文檔總標(biāo)題t1.font.size = Pt(15)t.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERt1.font.color.rgb = RGBColor(255, 0, 0)#輸入文檔內(nèi)容for dr in dataramdom:title = dr[0]content = dr[1]content = str(content).replace('\n','',1)t2 = doc.add_paragraph().add_run(title) #輸入標(biāo)題t2.font.color.rgb = RGBColor(0, 0, 255)t2.bold = Truedoc.add_paragraph(content) #輸入內(nèi)容doc.save(f'{filpaths}.docx')def makefolder(filepath):"""創(chuàng)建文件夾"""while True:if os.path.isdir(filepath):breakelse:os.makedirs(filepath)def upload_file():"""獲取文件地址"""selectFile = tk.filedialog.askopenfilenames() # askopenfilename 1次上傳1個(gè);askopenfilenames1次上傳多個(gè)selectFile = list(selectFile)upload_entry.insert(0, selectFile)return selectFiledef getTextInput():"""獲取輸入"""global textExample3countdoc1 = textExample.get("1.0", "end") # 獲取多少題countdoc2 = textExample2.get("1.0", "end") # 形成多少題庫(kù)文檔countdoc3 = textExample3.get("1.0", "end")countdoc1 = str(countdoc1).replace('\n','')countdoc2 = str(countdoc2).replace('\n','')countdoc3 = str(countdoc3).replace('\n','')filelist = upload_file()r = readfile(filelist)folderpath = './生成的題庫(kù)'docName = countdoc3folderpath = os.path.join(folderpath, docName)makefolder(folderpath) # 創(chuàng)建文件夾n = int(countdoc2)m = 0while True:m += 1if m > n:breakelse:filename = docName + "_" + str(m)filapathName = os.path.join(folderpath, filename)print(f"{filename} 生成成功")wordDoc(r,countdoc3,filapathName,countdoc1)def thread_it(func):'''將函數(shù)打包進(jìn)線程'''# 創(chuàng)建t = threading.Thread(target=func)# 守護(hù) !!!t.setDaemon(True)# 啟動(dòng)t.start()# 阻塞--卡死界面!#輸入文件 upload = tk.Frame(window) upload.pack(padx=20,pady=20) upload_entry = tk.Entry(upload, width='40') upload_entry.pack(padx=50,pady=10)import time nowtime = time.time()nowtime1 = int(time.time()) nowtime2 = int(time.time())+3000btnRead = tk.Button(window, height=1, width=10, text="開(kāi)始程序", command=lambda:thread_it(getTextInput)) btnRead.pack(padx=50,pady=10) # 顯示按鈕window.mainloop()

軟件最終呈現(xiàn)如下:

題庫(kù)數(shù)量表示:一個(gè)文檔有多少個(gè)題

題庫(kù)文檔數(shù)量表示:你需要生成多個(gè)文檔

文檔名稱:文檔的主要內(nèi)容的主標(biāo)題,也是文檔的文件名稱

?

如果這篇文章對(duì)你有幫助,記得點(diǎn)個(gè)關(guān)注!

總結(jié)

以上是生活随笔為你收集整理的python 自动化办公 随机生成题库文档的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。