在Python上编写代码或编写代码是否有问题?

在Python上编写代码或编写代码是否有问题?,python,file-management,Python,File Management,我想用note\u calculate从Folder.txt计算一个类的笔记。我还可以计算成绩。在计算之后,我插入列表(称为allnames)。之后,我将该列表中的信息放入一个名为Namesandnotes.txt的新txt文件夹。问题从现在开始。我想在.txt文件夹中写入合格学生和不合格学生。“CC”和高年级学生应使用Passed Students.txt,低年级学生应使用Failed Students.txt。但是在代码中,我无法将Namesandgrades.txt中的名称和等级写入“通过

我想用
note\u calculate
Folder.txt
计算一个类的笔记。我还可以计算成绩。在计算之后,我插入列表(称为
allnames
)。之后,我将该列表中的信息放入一个名为
Namesandnotes.txt
的新txt文件夹。问题从现在开始。我想在
.txt
文件夹中写入
合格学生
不合格学生
。“CC”和高年级学生应使用
Passed Students.txt
,低年级学生应使用
Failed Students.txt
。但是在代码中,我无法将
Namesandgrades.txt
中的名称和等级写入“通过”和“失败”。这是我的问题

def note_calculate(line):
    line = line[:-1]
    list1 = line.split(",")
    name = list1[0]
    note1 = int(list1[1])
    note2 = int(list1[2])
    final = int(list1[3])
    son = note1 * (3/10) + note2 * (3/10) + final * (4/10)
    passed = []
    failed = []

    if (son >= 90):
        grade = "AA"
    elif (son >= 85):
        grade = "BA"
    elif (son >= 80):

        grade = "BB"
    elif (son >= 75):

        grade = "CB"
    elif (son >= 70):

        grade = "CC"
    elif (son >= 65):

        grade = "DC"
    elif (son >= 60):

        grade = "DD"
    elif (son >= 55):

        grade = "FD"
    else:
        grade = "FF"
    return name +","+ grade



with open("Folder.txt","r", encoding="utf-8") as file:
    allnames = list()
    for i in file:
        allnames.append(note_calculate(i))

    with open("Namesandnotes.txt","r+", encoding = "utf-8") as file2:

        for a in allnames:
            file2.write(a + "\n")

with open("Namesandnotes.txt","r", encoding="utf-8") as file3:
    passed = list()
    failed = list()
    text = file3.read()
    print(text)
    for line in file3:
        line = line[:-1]
        line_element = line.split(",")

        if (line_element[1] == "AA"):
            passed.append(line_element[1] + "\n")
        elif (line_element[1] == "BA"):
            passed.append(line_element[1] + "\n")
        elif line_element[1] == "BB":
            passed.append(line_element[1] + "\n")
        elif line_element[1] == "CB":
            passed.append(line_element[1] + "\n")
        elif line_element[1] == "CC":
            passed.append(line_element[1] + "\n")
        else:
            failed.append(line_element[1] + "\n")


    with open("PassedStudents.txt","r+",encoding="utf-8") as file4:
        for x in passed:
            file4.write(x + "\n")
    with open("FailedStudents.txt", "r+", encoding="utf-8") as file5:
        for c in failed:
            file5.write(c + "\n")

问题是
text=file3.read()
。完成此操作后,光标将位于文件的末尾,因此稍后当您逐行遍历file3时,文件末尾将没有可读取的内容,也不会写入任何内容。只要删除那一行就行了


对于进一步的调试,我还建议在其他地方进行打印,这样您就可以看到您的代码实际进入了哪些条件和循环。

什么意思是“不能写”?会发生什么?如果有错误消息,请编辑问题以将其显示为格式正确的文本。@MichaelButscher否,没有错误消息。我写的代码,他们应该从我打开的文件夹中提取文本,然后写下我想要的文件夹。但代码却毫无用处。没有我说的错误,但是没有像我说的那样写文件夹。首先谢谢你的建议。就像你说的,我删除了那个代码,把“r+”也改成了“w”。5小时后,该计划现在运行良好。我很累,陷入这个问题太久了。在你的评论之后,我脑海中突然出现了一个解决方案。我可以使用“file.seek(0)”,这样我就可以将光标移动到该文件的开头。但现在我对你的解决方案很满意。再次感谢^^是的,如果您想保留file.read(),file.seek(0)也应该可以工作。很高兴为您服务,祝您好运!