将python sava数据转换为txt文件

时间:2018-05-06 06:00:51

标签: python file-handling

我有问题创建一个完整的编码python文件处理。我需要python中的所有数据函数都保存在txt文件中。以下是我的编码。

def getListFromFile(fileName):
 infile = open(fileName,'r')
 desiredList = [line.rstrip() for line in infile]
 infile.close()
 return desiredList   

def main():
 staffRegistration()
 staffLogin()

 regList = getListFromFile("registration.txt")
 createSortedFile(regList, "afterreg.out")
 loginList = getListFromFile("login.txt")
 createSortedFile(userLogin, "afterlogin.out")

 checkFileRegistration()
 checkFileLogin()

def checkFileRegistration():
 print("\nPlease check afterreg.out file")

def checkFileLogin():
 print("\nPlease check afterlogin.out file")

def staffRegistration():
 regList = []
 name = input("Name: ")
 s = int(input("Staff ID (e.g 1111): "))
 regList.append(s)
 s = int(input("Staff IC (without '-'): "))
 regList.append(s)
 s = int(input("Department - 11:IT Dept 12:ACC/HR Dept 13:HOD 41:Top 
 Management (e.g 1/2/3/4): "))
 regList.append(s)
 s = int(input("Set username (e.g 1111): "))
 regList.append(s)
 s = int(input("Set Password (e.g 123456): "))
 regList.append(s)

 f = open("registration.txt",'w')
 f.write(name)
 f.write(" ")
 for info in regList:
    f.write("%li "%info)
 f.close

 f1 = open("afterreg.out",'w')
 f1.writelines("Registration Successful\n\n")
 f1.close()

def staffLogin():
 serLogin = input("\nProceed to login - 1:Login 2:Cancel (e.g 1/2): ")
 if userLogin == "1":
    username = input("\nUsername (e.g 1111): ")
    l = int(input("Password: "))
 if userLogin == "2":
    print("\nLogin cancelled")

 f = open("login.txt",'w')
 f.write(username)
 f.write(" ")
 for info in userLogin:
    f.write("%li "%info)
 f.close

 f1 = open("afterlogin.out",'w')
 f1.writelines("Logged in successful")
 f1.close()

def createSortedFile(listName, fileName):
 listName.sort()
 for i in range(len(listName)):
    listName[i] = listName[i] + "\n"      
    outfile = open(fileName,'a')
    outfile.writelines(listName)

 outfile.close() 

main()

实际上,这个程序应该有五个要求。首先是staffRegistration()staffLogin()staffAttendance()staffLeaveApplication()approval()但我只做了两个要求而且我被卡在staffLogin()。我需要将每个函数保存在txt文件中(我的意思是函数中的数据)。

2 个答案:

答案 0 :(得分:1)

在第32行中,您尝试将String转换为Integer。此外,在您的main函数中,您有一个未解析的变量userLogin。 另一个问题是在第43行(staffLogin函数),你想写一个长整数,但你传递一个字符串。我试图修复你的代码,除了main中的userLogin。

def getListFromFile(fileName):
 infile = open(fileName,'r')
 desiredList = [line.rstrip() for line in infile]
 infile.close()
 return desiredList

def main():
 staffRegistration()
 staffLogin()

 regList = getListFromFile("registration.txt")
 createSortedFile(regList, "afterreg.out")
 loginList = getListFromFile("login.txt")
 createSortedFile(userLogin, "afterlogin.out")

 checkFileRegistration()
 checkFileLogin()

def checkFileRegistration():
 print("\nPlease check afterreg.out file")

def checkFileLogin():
 print("\nPlease check afterlogin.out file")

def staffRegistration():
 regList = []
 name = input("Name: ")
 s = int(input("Staff ID (e.g 1111): "))
 regList.append(s)
 s = int(input("Staff IC (without '-'): "))
 regList.append(s)
 s = input("Department - 11:IT Dept 12:ACC/HR Dept 13:HOD 41:Top  Management (e.g 1/2/3/4): ")
 regList.append(s)
 s = int(input("Set username (e.g 1111): "))
 regList.append(s)
 s = int(input("Set Password (e.g 123456): "))
 regList.append(s)

 f = open("registration.txt",'w')
 f.write(name)
 f.write(" ")
 for info in regList:
    f.write("%li "%info)
 f.close

 f1 = open("afterreg.out",'w')
 f1.writelines("Registration Successful\n\n")
 f1.close()

def staffLogin():
 userLogin = input("\nProceed to login - 1:Login 2:Cancel (e.g 1/2): ")
 if userLogin == "1":
    username = input("\nUsername (e.g 1111): ")
    l = int(input("Password: "))
 if userLogin == "2":
    print("\nLogin cancelled")

 f = open("login.txt",'w')
 f.write(username)
 f.write(" ")
 for info in userLogin:
    f.write("%s "%info)
 f.close

 f1 = open("afterlogin.out",'w')
 f1.writelines("Logged in successful")
 f1.close()

def createSortedFile(listName, fileName):
 listName.sort()
 for i in range(len(listName)):
    listName[i] = listName[i] + "\n"
    outfile = open(fileName,'a')
    outfile.writelines(listName)

 outfile.close()

main()

答案 1 :(得分:0)

staffLogin()功能存在很多问题。例如第一个input()的结果绑定到serLogin,但这应该是userLogin

如果更正了,则会从用户读取密码,但不会对其进行任何操作。密码应该被视为整数吗?

此外,如果用户在第一次提示时输入2,代码将不会设置username,但仍会尝试将username写入文件。这将引发NameError例外。

最后,代码尝试将userLogin中的字符写入文件,就好像它们是整数一样。这不仅不起作用,而且没有意义。也许这应该是将密码写入文件?