# 使用import导入os模块 import os # 将乔老师的答题卡文件夹路径 /Users/qiao/answerKey 赋值给变量allKeyPath allKeyPath = "/Users/qiao/answerKey" # 使用os.listdir()函数获取该路径下所有的文件,并赋值给变量allItems allItems = os.listdir(allKeyPath) # 定义一个空列表allStudentsData存储所有学生数据 allStudentsData = [] # 使用for循环逐个遍历所有学生答题卡 for item in allItems: # 定义一个空字典studentData存储单个学生数据 studentData = {} # 使用os.path.splitext()函数获取文件名的前半段,并赋值给变量fileName fileName = os.path.splitext(item)[0] # 使用split()函数以"-"分隔文件名,将第1部分班级信息赋值到学生数据字典的classInfo键里 studentData["classInfo"] = fileName.split("-")[0] # 使用split()函数以"-"分隔文件名,将第2部分姓名信息赋值到学生数据字典的name键里 studentData["name"] = fileName.split("-")[1] # 使用append()函数将studentData添加到总学生数据allStudentsData中 allStudentsData.append(studentData) # 使用print输出变量allStudentsData print(allStudentsData)
# 使用import导入os模块 import os # 使用import导入docx import docx # 将乔老师的答题卡文件夹路径 /Users/qiao/answerKey 赋值给变量allKeyPath allKeyPath = "/Users/qiao/answerKey" # 使用os.listdir()函数获取该路径下所有的文件,并赋值给变量allItems allItems = os.listdir(allKeyPath) # 定义一个空列表allStudentsData存储所有学生数据 allStudentsData = [] # 使用for循环逐个遍历所有学生答题卡 for item in allItems: # 定义一个空字典studentData存储单个学生数据 studentData = {} # 使用os.path.splitext()函数获取文件名的前半段,并赋值给变量fileName fileName = os.path.splitext(item)[0] # 使用split()函数以"-"分隔文件名,将第1部分班级信息赋值到学生数据字典的classInfo键里 studentData["classInfo"] = fileName.split("-")[0] # 使用split()函数以"-"分隔文件名,将第2部分姓名信息赋值到学生数据字典的name键里 studentData["name"] = fileName.split("-")[1] # 使用os.path.join()函数拼接出答题卡路径,并赋值给变量keyPath keyPath = os.path.join(allKeyPath, item) # 读取答题卡并赋值给变量doc doc = docx.Document(keyPath) # 使用print输出doc print(doc) # 使用append()函数将studentData添加到总学生数据allStudentsData中 allStudentsData.append(studentData)
,用2这个数字减一即可得到对应的索引来进行读取
# 使用import导入os模块 import os # 使用import导入docx import docx # 将乔老师的答题卡文件夹路径 /Users/qiao/answerKey 赋值给变量allKeyPath allKeyPath = "/Users/qiao/answerKey" # 使用os.listdir()函数获取该路径下所有的文件,并赋值给变量allItems allItems = os.listdir(allKeyPath) # 定义一个空列表allStudentsData存储所有学生数据 allStudentsData = [] # 使用for循环逐个遍历所有学生答题卡 for item in allItems: # 定义一个空字典studentData存储单个学生数据 studentData = {} # 使用os.path.splitext()函数获取文件名的前半段,并赋值给变量fileName fileName = os.path.splitext(item)[0] # 使用split()函数以"-"分隔文件名,将第1部分班级信息赋值到学生数据字典的classInfo键里 studentData["classInfo"] = fileName.split("-")[0] # 使用split()函数以"-"分隔文件名,将第2部分姓名信息赋值到学生数据字典的name键里 studentData["name"] = fileName.split("-")[1] # 使用os.path.join()函数拼接出答题卡路径,并赋值给变量keyPath keyPath = os.path.join(allKeyPath, item) # 读取答题卡并赋值给变量doc doc = docx.Document(keyPath) # 读取第四段学号段,并赋值给变量idPara idPara = doc.paragraphs[3] # 读取学号段中第二个样式块,并赋值给变量idRun idRun = idPara.runs[1] # 读取学号,并赋值到学生数据字典的id键里 studentData["id"] = idRun.text # 使用append()函数将studentData添加到总学生数据allStudentsData中 allStudentsData.append(studentData) # 使用print输出变量allStudentsData print(allStudentsData)
读取Word内置段落样式名称
第11课中,我们提到“每个段落之中的内容可以具有不同的样式(Style)”。在python-docx模块中,每一个内置样式都有不同的样式名称。
通过访问段落下的 .style 属性,可以获取段落中的样式列表。
然后,再通过访问样式列表下的 .name 属性,就可以获取到真正的样式名称啦。
例如,获取段落para的样式名称,并赋值给变量styleName的代码为:
styleName = para.style.name
1
“万能思路”是Word文档中的Title(标题)
“适用题目”是Word文档中的Heading 1(标题 1)
“练习”是Word文档中的Heading 2(标题 2)
“答案”是Word文档中的Normal(正文)
八、遍历索引
简单来说,enumerate()函数用来遍历一个可遍历对象中的元素,同时通过一个计数器变量记录当前元素所对应的索引值。
比如刚才的代码中:
存储标准答案的列表standardTwo可以作为可遍历的对象;
而记录学生答案的索引idx则可以看作是用于计数的变量。
***enumerate()***函数常用于for循环中。当我们既需要一个计数器,又需要可遍历对象的值时,就可以使用enumerate()函数。
1)修改起始索引
要设置索引的初始值,可以直接将初始值作为可选参数传入enumerate()函数中。比如,我们希望idx从8开始,直接将8传入enumerate()中即可。根据输出可以看到,现在idx的值,就是学生填空题答案的段落索引,起始值为8。
# 使用for循环和enumerate()函数
————————————————
版权声明:本文为CSDN博主「数学ばか」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tianshijie08/article/details/126438427
# 使用import导入os模块 import os # 使用import导入docx import docx # 将乔老师的答题卡文件夹路径 /Users/qiao/answerKey 赋值给变量allKeyPath allKeyPath = "/Users/qiao/answerKey" # 使用os.listdir()函数获取该路径下所有的文件,并赋值给变量allItems allItems = os.listdir(allKeyPath) # 定义一个空列表allStudentsData存储所有学生数据 allStudentsData = [] # 使用for循环逐个遍历所有学生答题卡 for item in allItems: # 定义一个空字典studentData存储单个学生数据 studentData = {} # 使用os.path.splitext()函数获取文件名的前半段,并赋值给变量fileName fileName = os.path.splitext(item)[0] # 使用split()函数以"-"分隔文件名,将第1部分班级信息赋值到学生数据字典的classInfo键里 studentData["classInfo"] = fileName.split("-")[0] # 使用split()函数以"-"分隔文件名,将第2部分姓名信息赋值到学生数据字典的name键里 studentData["name"] = fileName.split("-")[1] # 使用os.path.join()函数拼接出答题卡路径,并赋值给变量keyPath keyPath = os.path.join(allKeyPath, item) # 读取答题卡并赋值给变量doc doc = docx.Document(keyPath) # 读取第四段学号段,并赋值给变量idPara idPara = doc.paragraphs[3] # 读取学号段中第二个样式块,并赋值给变量idRun idRun = idPara.runs[1] # 使用append()函数将studentData添加到总学生数据allStudentsData中 allStudentsData.append(studentData)
# 使用for循环和enumerate()函数 # 遍历储存标准答案的列表standardTwo的同时 # 生成一个从8开始的index for idx,value in enumerate(standardTwo,8): # 格式化输出:索引值n所对应的列表元素是xxx print(f"索引值{idx}所对应的列表元素是{value}") #value用于在for循环里,存储遍历时standardTwo中的元素。 #idx相当于一个计数器变量,用于在for循环里,记录standardTwo里各元素所对应的索引值。
批量写入Word文档的表格
需要注意的是,Excel工作簿中这几列存储的数据是整型(int),不是字符串。
但是add_text()和add_run()函数的参数只能接收字符串类型,所以在读取数据时需要将整型数据转化为字符串。
1、数据类型转为字符串
在Python中,可以通过***str()***函数,将一个对象转化为string格式。只需将需要转换的对象作为参数,传入str()函数中即可。
————————————————
版权声明:本文为CSDN博主「数学ばか」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tianshijie08/article/details/126438427
标签:studentData,办公自动化,word,函数,allStudentsData,python,os,变量,赋值 From: https://www.cnblogs.com/QQ-77Ly/p/17675066.html