使用Python存储到文件并检索文件内容

使用Python存储到文件并检索文件内容,python,python-3.x,Python,Python 3.x,我有这段代码,是根据教程编写的,并且成功地存储到了一个文件中。我检查了文件的物理,以确保信息在那里,它是。但是找回它让我很难。我盯着它看了好几个小时,没发现有什么毛病。如果您按照步骤2-21-5-9重新运行,然后执行步骤6-1,您将注意到第一组步骤没有问题,第二组菜单选项没有问题 这就是我所拥有的 team.py类文件 #Team class definition class Team: #initializing object def __init__(self, nam

我有这段代码,是根据教程编写的,并且成功地存储到了一个文件中。我检查了文件的物理,以确保信息在那里,它是。但是找回它让我很难。我盯着它看了好几个小时,没发现有什么毛病。如果您按照步骤2-21-5-9重新运行,然后执行步骤6-1,您将注意到第一组步骤没有问题,第二组菜单选项没有问题

这就是我所拥有的

team.py类文件

#Team class definition

class Team:

    #initializing object

    def __init__(self, name, phone, jersey):

        self.__name = name

        self.__phone = phone

        self.__jersey = jersey


    #mutator methods

    def setname(self, name):

        self.__name = name

    def setphone(self, phone):

        self.__phone = phone

    def setjersey(self, jersey):

        self.__jersey = jersey



    #accessor methods

    def getname(self):

        return self.__name

    def getphone(self):

        return self.__phone

    def getjersey(self):

        return self.__jersey


    #display template for output
    def displayData(self):

        print("")

        print("Team information: ")

        print("------------------------")

        print("Member's Name:", self.__name)

        print("Phone Number:", self.__phone)

        print("Jersey Number:", self.__jersey)
members.py程序文件

# program functions and import data

import team


def displayMenu():
    print("===========Main Menu===========")

    print("1. Team Roster.")

    print("2. Add Member.")

    print("3. Remove Member.")

    print("4. Edit Member.")

    print("5. Save Data.")

    print("6. Load Data.")

    print("9. Exit Program.")

    print("")

    return int(input("Selection> "))

def printMember(members):
    if len(members) == 0:

        print("No members in roster yet.")

    else:

        for x in members.keys():
            members[x].displayData()

def addMember(members):
    newName = input("Enter new member's name: ")

    newPhone = int(input("Enter member's phone number: "))

    newJersey = input("Enter member's jersey number: ")

    members[newName] = team.Team(newName, newPhone, newJersey)

    return members

def removeMember(members):
    removeName = input("Enter the member's name you wish to remove: ")

    if removeName in members:

        del members[removeName]

        print("\nYou've removed ", removeName)

    else:

        print("This name is not in our records.")

    return members

def editMember(members):

    oldName = input("Enter the name of the member you want to edit: ")

    if oldName in members:

        newName = input("Enter the member's new name: ")

        newPhone = int(input("Enter the member's new phone number: "))

        newJersey = input("Enter the member's new jersey number: ")

        members[oldName] = team.Team(newName, newPhone, newJersey)

    else:

        print("Member does not exist")

    return members

def saveData(members):

    filename = input("Filename to save: ")

    print("Saving data...")

    outFile = open(filename, "wt")

    for x in members.keys():

        name = members[x].getname()

        phone = str(members[x].getphone())

        jersey = members[x].getjersey()

        outFile.write(name + "," + phone + "," + jersey + "\n")

    print("Data saved.")

    outFile.close()

def loadData():

    members = {}

    filename = input("Filename to load: ")

    inFile = open(filename, "rt")

    print("Loading data...")

    while True:

        # read in a line of text from the text file

        inLine = inFile.readline()

        # if line is empty, stop loading data.

        if not inLine:

            break

        inLine = inLine[:-1]

        name, phone, jersey = inLine.split(",")

        members[name] = team.Team(name, phone, jersey)

    print("Data Loaded Successfully.")

    inFile.close()

    return members

# Running the program

print("Welcome to the Team Manager")

members = {}

menuSelection = displayMenu()

while menuSelection != 9:

    if menuSelection == 1:

        printMember(members)


    elif menuSelection == 2:

        members = addMember(members)


    elif menuSelection == 3:

        members = removeMember(members)


    elif menuSelection == 4:

        members = editMember(members)

    elif menuSelection == 5:

        filename = saveData(members)

    elif menuSelection == 6:

        filename = loadData()

    menuSelection = displayMenu()

print("Exiting Program...")

帮帮我,否则我会变成一个酒鬼:哈哈,这里是saveData不返回任何东西,不是文件名

filename = saveData(members)
loadData不返回文件名,它返回成员

filename = loadData()
我建议研究Python中全局变量的工作方式。您只需要一个成员实例

filename = loadData()
如果您正在寻找更好的方法来执行CRUD操作,请使用Python的sqlite模块


顺便说一下,Pycharm有一个有用的调试器

请尝试创建一个我通常做的@cricket_007,但上次我这么做的时候,我因为没有把整个程序都放进去而被狠狠地骂了一顿。不幸的是,一切或大部分都是需要的。我想我可以简化它,但不会太多。正如您所看到的,所有步骤都采用不同的方法,我必须将它们放在这里,否则没有人能够运行和调试它。如果它成为一个问题,我只会用一个问题重写它。好吧,你的问题是加载和保存,对吗?那么,为什么要显示所有其他内容?@cricket_007您必须在其中添加一些内容,以便文件可以包含加载时读取和返回的内容。这就是第1步和第2步所做的。我想你需要它来正确地测试它。我的建议是停止使用本教程。它看起来像是由一个没有Python经验的Java程序员制作的——使用getter和setter,无缘无故地弄乱名称,使用camel-case而不是snake-case——我想我不懂。我的代码的显示方式与您的建议相同。您是说它不应该是“filename=loadData”,而应该是“members=loadData”?这正是我要说的。我在指出你的错误。你如何选择修复它,取决于你自己。我相信你有能力调试这些问题。我在方法中使用成员作为参数或属性,并在以后调用它,但它仍然不起作用。顺便说一句,我试图通过使用更高级的东西来避免在本教程中超越自己。我相信我会及时赶到那里。这段代码应该可以正常工作,但我搞糟了的除外,当然,知道这一点很好。你说得对,参数也没用。谢谢你的帮助。现在可以了。