使用Python存储到文件并检索文件内容
我有这段代码,是根据教程编写的,并且成功地存储到了一个文件中。我检查了文件的物理,以确保信息在那里,它是。但是找回它让我很难。我盯着它看了好几个小时,没发现有什么毛病。如果您按照步骤2-21-5-9重新运行,然后执行步骤6-1,您将注意到第一组步骤没有问题,第二组菜单选项没有问题 这就是我所拥有的 team.py类文件使用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
#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”?这正是我要说的。我在指出你的错误。你如何选择修复它,取决于你自己。我相信你有能力调试这些问题。我在方法中使用成员作为参数或属性,并在以后调用它,但它仍然不起作用。顺便说一句,我试图通过使用更高级的东西来避免在本教程中超越自己。我相信我会及时赶到那里。这段代码应该可以正常工作,但我搞糟了的除外,当然,知道这一点很好。你说得对,参数也没用。谢谢你的帮助。现在可以了。