1.思路讲解
1.1首先读取部分,我们事先准备好一个文件夹,在内部创建一个文件,注意文件名不可重复,我这边使用了datetime.date.today()来达到文件名始终为当前日期的方式,再利用os.path.exists(path)来判断文件路径是否存在,如若不存在就新建,存在就追加
1.2进行读取时,我们找到固定的规律,在其中找到周期即可读取到我们所需要的数据内容,读取完后再将读取到的四个选项以及题目答案存储在其列表内部即可,方便后续的判断题目是否重复出现.
1.3在进行判断重复的部分,需要注意的一个点就是,我们读取出来的数据内容时--------"1+1\n"而不是单纯的一串数据所以说我们要在用户输入完题目后再加上"\n"
1.4最后的写入部分,也就是较为简单的一部分了,将我们存储的数据以覆盖的方式写入到文件当中即可.
1.5上述只是大概描述,具体请看下面的代码情况,感谢大家.
import datetime
import os
# 以上是导入模块的一个部分,os模块来进行路径的判断,datetime主要进行一个时间的提取
mode = "w+"
# 默认文件打开模式为 "w+"
time = datetime.date.today()
choice_2_2 = 0
# 下列列表是用于题目,A选项,B选项,C选项,D选项,答案的保存工作,如命知其意
Multiple_choice_questions_list = []
Multiple_choice_questions_list_A = []
Multiple_choice_questions_list_B = []
Multiple_choice_questions_list_C = []
Multiple_choice_questions_list_D = []
Multiple_choice_questions_list_answer = []
Multiple_choice_questions_list_count = 0
# 此处的判断路径即是当路劲存在时我们就执行追加写入,如若不存在我们的默认mode值就是w+也就是新建覆盖写入。
if os.path.exists(f"E:\\测试系统\\{time}.选择题.text"):
mode = "a+"
# 这里我们开始准备做一个读取之前文件的方法,让我们的列表中存储进之前的数据,以免造成重复试题的输入。
with open(f"E:\\测试系统\\{time}.选择题.text", mode, encoding="utf-8") as choice_file_1:
# 回到第一行的操作
choice_file_1.seek(0)
choice_file_1_count = 0
# 注意,此处i的用法是没有的,不必纠结i在何处使用。
for i in range(len(choice_file_1.readlines())):
choice_file_1.seek(0)
# 此处执行加5的操作是因为周期的关系。
# 下方执行各个列表的添加来达到避免重复试题的输入
# 为何会反复出现choice_file_1.seek(0)这串代码呢,主要原因就是我们使用的是choice_file_1.readlines(),用完一次choice_file_1.readlines()后我们的鼠标光标会移到最后面,我们得让他移到第一行.
if choice_file_1_count + 5 < len(choice_file_1.readlines()):
choice_file_1.seek(0)
Multiple_choice_questions_list.append(choice_file_1.readlines()[choice_file_1_count + 0])
choice_file_1.seek(0)
Multiple_choice_questions_list_A.append(choice_file_1.readlines()[choice_file_1_count + 1])
choice_file_1.seek(0)
Multiple_choice_questions_list_B.append(choice_file_1.readlines()[choice_file_1_count + 2])
choice_file_1.seek(0)
Multiple_choice_questions_list_C.append(choice_file_1.readlines()[choice_file_1_count + 3])
choice_file_1.seek(0)
Multiple_choice_questions_list_D.append(choice_file_1.readlines()[choice_file_1_count + 4])
choice_file_1.seek(0)
Multiple_choice_questions_list_answer.append(choice_file_1.readlines()[choice_file_1_count + 5])
choice_file_1_count += 7
else:
pass
# 这里就到了我们的输入环节了,进行题目的判断重复的一个工作
dit_topic_1 = str(input("请输入题目:"))
# 此处加\n的原因是我们提取出来的值不是单纯的一串文字而是这种情况-------------"1+1\n"的形式.
dit_topic_2 = dit_topic_1 + "\n"
if dit_topic_2 in Multiple_choice_questions_list:
print("该题目已存在")
# 此处题目不存在即可执行写入操作的第一步,也就是将我们所需要的值存储在ABCD四个列表中.
else:
Multiple_choice_questions_A = input("请输入A选项:")
Multiple_choice_questions_list_A.append(Multiple_choice_questions_A)
Multiple_choice_questions_B = input("请输入B选项:")
Multiple_choice_questions_list_B.append(Multiple_choice_questions_B)
Multiple_choice_questions_C = input("请输入C选项:")
Multiple_choice_questions_list_C.append(Multiple_choice_questions_C)
Multiple_choice_questions_D = input("请输入D选项:")
Multiple_choice_questions_list_D.append(Multiple_choice_questions_D)
Multiple_choice_questions_answer = input("请输入正确选项:")
Multiple_choice_questions_list_answer.append(Multiple_choice_questions_answer)
# 执行选择题写入操作
with open(f"E:\\测试系统\\{time}.选择题.text", mode, encoding="utf-8") as choice_file:
# print(dit_topic_1)
choice_file.write(dit_topic_1 + "\n")
# print(Multiple_choice_questions_A)
choice_file.write(Multiple_choice_questions_A + "\n")
# print(Multiple_choice_questions_B)
choice_file.write(Multiple_choice_questions_B + "\n")
# print(Multiple_choice_questions_C)
choice_file.write(Multiple_choice_questions_C + "\n")
# print(Multiple_choice_questions_D)
choice_file.write(Multiple_choice_questions_D + "\n")
# print(Multiple_choice_questions_answer)
choice_file.write(Multiple_choice_questions_answer + "\n")
choice_file.write("---------------------------------" + "\n")