2017-02-08 37 views
0

我有這個代碼,我建立了一個教程後,我成功地存儲到一個文件。我在物理上檢查了這個文件,以確保信息在那裏。但檢索它給我很難。我盯着它幾個小時,沒有發現任何問題。如果按照步驟2 - 2 1 - 5 - 9重新運行,然後執行步驟6 - 1您會注意到第一組步驟沒有問題,第二組菜單選項沒有。存儲到一個文件,並用Python檢索文件的內容

這就是我所擁有的。

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...") 

幫幫我吧,不然我會變成一個酒鬼:)哈哈這裏是IDEONE

+0

請嘗試創建一個[MCVE] –

+0

我通常做@ cricket_007但我最後一次這樣做我得到了我的屁股訓斥不把整個程序。不幸的是,一切或大部分都是需要的。我想我可以簡化它,但不是很多。正如你所看到的步驟都採用不同的方法,我不得不把它們放在這裏,否則沒有人能夠運行它並進行調試。如果它成爲問題,我只會用一個問題重寫它。 – LOTUSMS

+0

那麼,你的問題是加載和保存,對吧?那麼,你爲什麼要展示其他一切? –

回答

1

SAVEDATA回報什麼都沒有,而不是文件

filename = saveData(members) 

loadData不返回文件名,它返回成員。

filename = loadData() 

我建議研究全局變量如何在Python中工作。您只需要一個members的實例。

如果您正在尋找執行CRUD操作更好的方法,使用Python

的sqlite的模塊,順便說一句,Pycharm有一個有用的調試器。

+0

我不認爲我遵循。我的代碼顯示它與您所建議的方式相同。 – LOTUSMS

+0

你是說它不應該是'filename = loadData()',而是'members = loadData()'? – LOTUSMS

+0

這正是我所說的。我指出你的錯誤。你如何選擇解決它,取決於你。我相信你能夠調試這些問題 –

相關問題