import os import csv import random #打开文件,将谜语集读成字典 def getDic(fileName): dic={} with open(fileName,'r',encoding='utf-8') as file: reader=csv.reader(file) next(reader) #跳过文件中的表头 for row in reader: dic[row[0]]=row[1] #谜面作为key,谜底作为value return dic #生成长度为n的试卷列表,每一个元素为一套试卷列表 def creatPapers(dic,n): tests=[] items=list(dic.keys()) for i in range(n): random.shuffle(items) #打乱列表顺序取前10题 ls=items[:10] tests.append(ls) return tests #生成n个试卷文件和n个答卷文件 def createFiles(lsPapers,lsAnswers,n): for i in range(n): fpn="paper" + str(i+1) + ".txt" with open(fpn,'w',encoding='utf-8') as filep: filep.writelines([item + '\n' for item in lsPapers[i]]) fan="answer" + str(i+1) + ".txt" with open(fan,'w',encoding='utf-8') as filea: filea.writelines([item + '\n' for item in lsAnswers[i]]) #主程序,生成n套试卷和答卷 os.chdir("c:\\python38") fn="儿童谜语集.csv" n=5 riddles=getDic(fn) papers=creatPapers(riddles,n) answers=[] #根据谜面列表papers生成对应的答案列表 for paper in papers: ans=[riddles[item] for item in paper] answers.append(ans) createFiles(papers,answers,n)

时间: 2024-03-04 20:53:54 浏览: 18
这段代码是用 Python 实现的生成试卷和答卷的程序。它包含了三个函数,分别是 `getDic`、`creatPapers` 和 `createFiles`。其中 `getDic` 函数用于读取谜语集文件并将其转换成字典格式,`creatPapers` 函数可以生成多个试卷,每个试卷包含10道题目,`createFiles` 函数用于将试卷和答卷写入文件中。在主程序中,首先将工作目录切换到指定目录,然后读取谜语集文件,生成试卷和答卷,并将它们写入文件中。
相关问题

import os import csv def detLabel(filename): #determine the label of the recording if "cello" in filename: label = 0 elif "church" in filename: label = 1 elif "clarinet" in filename: label = 2 elif "flute" in filename: label = 3 elif "guitar" in filename: label = 4 elif "harp" in filename: label = 5 elif "marimba" in filename: label = 6 elif "perldrop" in filename: label = 7 elif "piano" in filename: label = 8 elif "synlead3" in filename: label = 9 else: #violin label = 10 return label fileOrigin = "samples" dataFile = "data.csv" with open(dataFile, 'w', newline='') as csvfile: fileWriter = csv.writer(csvfile, delimiter=',') fileWriter.writerow(['filename', 'instrument']) for filename in os.listdir(fileOrigin): fileWriter.writerow([filename, detLabel(filename)])

这段代码的作用是将文件夹samples中的音频文件按照乐器种类的不同标记,并将它们的名称和标记存储在名为data.csv的CSV文件中。 首先,定义了一个名为detLabel的函数,用于根据文件名确定音频文件所属的乐器种类,并返回一个标记(从0到10)。其中,0~9分别代表cello、church、clarinet、flute、guitar、harp、marimba、perldrop、piano和synlead3,10代表violin。 然后,代码定义了两个变量fileOrigin和dataFile,分别表示存放音频文件的文件夹路径和CSV文件的路径。 接下来,使用Python内置的os模块中的listdir()函数遍历fileOrigin文件夹中的所有文件名,并将它们传递给detLabel函数,获取对应的标记。最后,将文件名和标记写入data.csv文件中,以逗号分隔。其中,第一行为文件头,包括两列:filename和instrument。

with open('filename.csv', 'r') as file: reader = csv.reader(file)

这段代码打开一个名为"filename.csv"的CSV文件,并使用Python上下文管理器(with语句)来打开文件。然后,使用csv模块中的reader()函数创建一个reader对象,该对象可以逐行读取CSV文件中的内容。注意,在调用csv模块中的reader()函数之前,需要先导入csv模块。可以使用for循环来遍历reader对象,读取文件中的每一行并进行处理。例如: ``` import csv with open('filename.csv', 'r') as file: reader = csv.reader(file) for row in reader: # 处理每一行数据 print(row) ``` 在这个例子中,每次循环读取一行数据,并将该行数据存储在一个列表中,然后通过print语句将该列表输出到控制台。

相关推荐

import os import time import mmap import math #######计算分块文件数 总行数/分块文件行数 向上取整 def get_fileNum(fileRow,blockfileRow): n = fileRow / blockfileRow num = math.ceil(n) return num ########计算分块文件行数 预设800m文件 800m/每一行字节数 得到每个块的行数 def get_blockfileRow(row_size): n = (1048576*800) / row_size num = int(n) return num #########计算文件总行数 根据用户输入的文件字节数/每一行字节数 def get_fileRow(file_size,row_size): n = file_size/row_size return n if __name__ == "__main__": file_size = 8511559356 row_size = 0 filename = r"F:\5hao2qu\2\disp_tab.txt" with open(filename,mode="r",encoding="utf-8") as file_obj: with mmap.mmap(file_obj.fileno(),length=0,access=mmap.ACCESS_READ) as mmap_obj: text = mmap_obj.readline() row_size = len(text) if(row_size): blockfileRow = get_blockfileRow(row_size) fileRow = get_fileRow(file_size,row_size) fileNum = get_fileNum(fileRow,blockfileRow) remainRow = fileRow - blockfileRow*(fileNum-1) #print("ok") with open(r"F:\5hao2qu\2\disp_tab.txt", mode="r", encoding="utf-8") as file_obj: with mmap.mmap(file_obj.fileno(), length=0, access=mmap.ACCESS_READ) as mmap_obj: for j in range(fileNum-1): a = "height{}.txt".format(j) with open(r"F:\5hao2qu\2\disp_tab.txt" + a, 'wb') as f: for i in range(int(blockfileRow)): text = mmap_obj.readline() f.write(text) a = "height{}.txt".format(fileNum-1) with open(r"F:\5hao2qu\2\disp_tab1.txt" + a, 'wb') as f: for i in range(int(remainRow)): text = mmap_obj.readline() f.write(text)

最新推荐

recommend-type

【问题解决】Problem with torchvision下载成功但是import torchvision失败

现在是2020年5月4日0:51分,2020年五四青年节,我终于解决了这个问题 问题描述: 原创文章 74获赞 31访问量 7781 关注 私信 展开阅读全文 作者:GRIT_Kael
recommend-type

解决Jupyter notebook中.py与.ipynb文件的import问题

主要介绍了解决Jupyter notebook中.py与.ipynb文件的import问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

导入tensorflow时报错:cannot import name 'abs'的解决

主要介绍了导入tensorflow时报错:cannot import name 'abs'的解决,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Vue export import 导入导出的多种方式与区别介绍

主要介绍了Vue export import 导入导出的多种方式与区别介绍,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

IDEA 重新导入依赖maven 命令 reimport的方法

主要介绍了IDEA 重新导入依赖maven 命令 reimport的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

list根据id查询pid 然后依次获取到所有的子节点数据

可以使用递归的方式来实现根据id查询pid并获取所有子节点数据。具体实现可以参考以下代码: ``` def get_children_nodes(nodes, parent_id): children = [] for node in nodes: if node['pid'] == parent_id: node['children'] = get_children_nodes(nodes, node['id']) children.append(node) return children # 测试数
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。